WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

komplexe Fourier Analyse

 

Ovid
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 81
Anmeldedatum: 25.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.01.2012, 18:31     Titel: komplexe Fourier Analyse
  Antworten mit Zitat      
Hallihallo, Leute!

Ich hab hier mal folgendes Problem. Ich soll eine komplexe Fourier Berechnung durchführen und das ganze mit stem zeichnen.
Wie sieht das programmiertechnisch aus?
Könnt ihr mir ein paar Ratschläge und Tipps geben, wie ich das programmieren tu?

Hier mal die Funktion:

[math]
f(x)=\frac{2}{\pi } fuer - \frac{\pi }{2} \leq x \leq \frac{\pi }{2}
und f(x)= 2*(1-\frac{x}{\pi }) fuer \frac{\pi }{2} \leq x \leq \frac{3*\pi }{2}
[/math]

P.S.: Irgendwie scheint er das nicht richtig anzuzeigen...??
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.01.2012, 20:12     Titel:
  Antworten mit Zitat      
Hallo,

wo genau ist das Problem?

Ich persönlich würde
1. x-Vektor definieren
2. y-Vektor vorbelegen
3. per logischer Indizierung die y-Werte für 1. Fall berechnen
4. per logischer Indizierung die y-Werte für 2. Fall berechnen

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Ovid
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 81
Anmeldedatum: 25.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2012, 22:56     Titel:
  Antworten mit Zitat      
Gibt es auch nen Ratschlag für die Vorgehensweise des symbolischen rechnens? Und gibt es bei Matlab einen "Fourier" Befehl?
Vektoren mag ich nicht sonderlich Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.01.2012, 23:07     Titel:
  Antworten mit Zitat      
Hallo,

symbolisch halte ich für (unnötig) kompliziert und habe auch keinen konkreten Vorschlag zur symbolischen Umsetzung.

Was möchtest du denn mit der Gleichung machen? Plotten? Eine Wertetabelle anlegen? Dafür ist das Verwenden von Vektoren hier mindestens genauso gut geeignet.

Es gibt einen Fourier-Befehl, siehe hier:
http://www.mathworks.com/access/hel...../f1-122819.html#f1-122824

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Ovid
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 81
Anmeldedatum: 25.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2012, 18:47     Titel:
  Antworten mit Zitat      
Also, ich habs mal probiert mit symbolischer Berechnung.
Und zwar so:

[code]
syms x
n=1:50;
T=2*pi;
w=(2*pi)/T;

cn=1/T*(int((2/pi)*exp(-i*n*w*x),(-pi/2),(pi/2))+int((2*(1-(x/pi)))*exp(-i*n*w*x),(pi/2),(3*pi/2)))
[/code]

Allerdings kommt folgendes Ergebnis raus:

cn =

[ 32880603970571302491146779030281/162259276829213363391578010288128 - (5734161139222659*i)/(9007199254740992*pi), (5734161139222659*i)/36028797018963968, (1911387046407553*i)/(27021597764222976*pi) - 10960201323523767497048926343427/162259276829213363391578010288128, -(5734161139222659*i)/72057594037927936, 32880603970571302491146779030281/811296384146066816957890051440640 - (5734161139222659*i)/(225179981368524800*pi), (1911387046407553*i)/36028797018963968, (5734161139222659*i)/(441352763482308608*pi) - 32880603970571302491146779030281/1135814937804493543741046072016896, -(5734161139222659*i)/144115188075855872, 3653400441174589165682975447809/162259276829213363391578010288128 - (1911387046407553*i)/(243194379878006784*pi), (5734161139222659*i)/180143985094819840, (47389761481179*i)/(9007199254740992*pi) - 2989145815506482044649707184571/162259276829213363391578010288128, -(1911387046407553*i)/72057594037927936, 2529277228505484807011290694637/162259276829213363391578010288128 - (441089318401743*i)/(117093590311632896*pi), (5734161139222659*i)/252201579132747776, (1911387046407553*i)/(675539944105574400*pi) - 10960201323523767497048926343427/811296384146066816957890051440640, -(5734161139222659*i)/288230376151711744, 32880603970571302491146779030281/2758407706096627177656826174898176 - (5734161139222659*i)/(2603080584620146688*pi), (1911387046407553*i)/108086391056891904, (5734161139222659*i)/(3251598930961498112*pi) - 32880603970571302491146779030281/3082926259755053904439982195474432, -(5734161139222659*i)/360287970189639680, 10960201323523767497048926343427/1135814937804493543741046072016896 - (1911387046407553*i)/(1324058290446925824*pi), (521287376292969*i)/36028797018963968, (5734161139222659*i)/(4764808405757984768*pi) - 32880603970571302491146779030281/3731963367071907358006294236626944, -(1911387046407553*i)/144115188075855872, 32880603970571302491146779030281/4056481920730334084789450257203200 - (5734161139222659*i)/(5629499534213120000*pi), (441089318401743*i)/36028797018963968, (1911387046407553*i)/(2188749418902061056*pi) - 3653400441174589165682975447809/486777830487640090174734030864384, -(5734161139222659*i)/504403158265495552, 32880603970571302491146779030281/4705519028047187538355762298355712 - (5734161139222659*i)/(7575054573237174272*pi), (1911387046407553*i)/180143985094819840, (5734161139222659*i)/(8655918483806093312*pi) - 32880603970571302491146779030281/5030037581705614265138918318931968, -(5734161139222659*i)/576460752303423488, 996381938502160681549902394857/162259276829213363391578010288128 - (15796587160393*i)/(27021597764222976*pi), (5734161139222659*i)/612489549322387456, (5734161139222659*i)/(11033819087057715200*pi) - 32880603970571302491146779030281/5679074689022467718705230360084480, -(1911387046407553*i)/216172782113783808, 32880603970571302491146779030281/6003593242680894445488386380660736 - (5734161139222659*i)/(12330855779740418048*pi), (5734161139222659*i)/684547143360315392, (147029772800581*i)/(351280770934898688*pi) - 843092409501828269003763564879/162259276829213363391578010288128, -(5734161139222659*i)/720575940379279360, 32880603970571302491146779030281/6652630349997747899054698421813248 - (5734161139222659*i)/(15141101947219607552*pi), (1911387046407553*i)/252201579132747776, (5734161139222659*i)/(16654311422016094208*pi) - 32880603970571302491146779030281/6977148903656174625837854442389504, -(521287376292969*i)/72057594037927936, 3653400441174589165682975447809/811296384146066816957890051440640 - (1911387046407553*i)/(6079859496950169600*pi), (5734161139222659*i)/828662331436171264, (5734161139222659*i)/(19896903153722851328*pi) - 32880603970571302491146779030281/7626186010973028079404166483542016, -(1911387046407553*i)/288230376151711744, 32880603970571302491146779030281/7950704564631454806187322504118272 - (5734161139222659*i)/(21626285410633121792*pi), (5734161139222659*i)/900719925474099200]

Kann mir jemand erklären, was DAS ist?? Very Happy

Mein Netbook ist fast in die Knie gegangen für diese "Matlab Berechnung", allerdings verstehe ich überhaupt nicht, was mir diese Zahlen sagen sollen...^^

Grüße
Ovid
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.01.2012, 15:52     Titel:
  Antworten mit Zitat      
Hallo,

Das dürfte das Resultat einer Durchmischung von numerischen und symbolischen Berechnungen sein. Bei T=2*pi; wird z.B. eine Gleitkommazahl erzeugt, die 2*pi so gut wie möglich annähert - aber eben nicht mehr 2*pi.

Zudem ist es im symbolischen Fall sicher nicht sinnvoll, n = 1:50 zu setzen. Willst du 50 verschiedene Formeln?

So siehts schon besser aus:

Code:
syms x n
T=sym(2*pi);
w=sym(2*pi)/T;

cn=1/T*(int(sym(2/pi)*exp(-sym(i)*n*w*x),sym(-pi/2),sym(pi/2))+int((2*(1-(x/pi)))*exp(-sym(i)*n*w*x),sym(pi/2),sym(3*pi/2)))


Ich frage mich aber weiter, warum du hier auf symbolischen Berechnungen bestehst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Ovid
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 81
Anmeldedatum: 25.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2012, 17:05     Titel:
  Antworten mit Zitat      
Deswegen ist das so eine Wurst...Smile
Das mit dem symbolischen war ein Versuch, der, wie ich allmählich doch einsehen tu, in die expressionistische Richtung abdreht...^^

Aber mal zur gesamten Aufgabenstellung:

"Berechnen Sie für die Aufgabe 2 (die ich #1 vorgestellt habe) die Koeffizienten ak, bk und Ak=sqrt(ak^2+bk^2) für k=1,...50, sowie den Real- und Imaginärteil der komplexen Fourierkoeffizienten. Zeichnen Sie die jeweiligen Koeffizienten mit dem Matlab Befehl stem in ein Diagramm."

Also 50 Formel brauche ich nicht, aber anscheinend 50 Werte, die ich einzeln und wahrscheinlich auch nacheinander zeichnen muss.

So, das ist erstmal die gesamte Aufgabe, ich hoffe das mein Problem etwas klarer geworden ist. ^^

Grüße
Ovid

P.S.: Ein anderer aus unserer Matlab Gruppe hat sich meine Aufgabe geschnappt, anscheinend kommt er damit klar...allerdings habe ich eine andere aufgebrummt bekommen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Ovid
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 81
Anmeldedatum: 25.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2012, 17:36     Titel:
  Antworten mit Zitat      
Die Aufgabe hat allerdings auch mit Fourier zu tun, nur etwas anders.

"Stellen Sie die folgenden periodischen Funktionen mit der Grundfrequenz f grafisch dar und zeichnen Sie das zugehörige Amplitudenspektrum. Spielen Sie die entstehenden Töne mit den Befehlen soundsc oder wavplay jeweils im Intervall t=[0,2s] ab."

Da nahm ich mir die Funktion yt1 = sin(2*Pi*f*t), f=440 Hz

Bis jetzt habe ich folgendes:

[code]

f=440;
t=0:0.001:2;
yt1=sin(2*pi*f*t);

hold on
grid on
plot(t,yt1)

[/code]

Nun ist meine Frage, wie stelle ich das Amplitudenspektrum perfekt dar? Wenn ich stem(yt1) eingebe, zeigt er mir die Funktion an, aber mit an der Funktion...so allerdings sieht das Spektrum nicht aus, ich weiss nur nicht, was da noch fehlt...

Kannst du mir da weiterhelfen?

Grüße
Ovid
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.01.2012, 18:06     Titel:
  Antworten mit Zitat      
Hallo,

ich weiß jetzt nicht, was bei euch die ak, bk etc. sind, und du willst ja sicher auch nicht, dass ich deine Aufgaben für dich erledige Wink

Ich habe aber mal das, was Do., 18:47 symbolisch probiert hast, numerisch gemacht - und es funktioniert ohne Probleme:
Code:
T=2*pi;
w=(2*pi)/T;
c = zeros(1,50);
for n=1:50
    c(n)=1/T*(quad(@(x) 2/pi*exp(-1i*n*w*x),-pi/2,pi/2)+quad(@(x) 2*(1-(x/pi)).*exp(-1i*n*w*x),pi/2,3*pi/2));
end


Zur neuen Aufgabe: ich denke mal, du solltest die FFT berechnen...

Grüße,
Harald

Zuletzt bearbeitet von Harald am 20.01.2012, 19:08, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Ovid
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 81
Anmeldedatum: 25.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2012, 18:25     Titel:
  Antworten mit Zitat      
Das werde ich gewissentlich mal weiterleiten, danke erstmal dafür ^^

Und die Aufgabe, die ich jetzt habe, also yt1=sin(2*pi*f*t), mit der Frequenz = 440 Hz, die soll ich grafisch darstellen und dann das Amplitudenspektrum zeichnen lassen. Danach soll ich die Funktion mit dem Befehl Wavplay oder soundsc abspielen.

Aber erstmal Konzentration auf das Amplitudenspektrum.
Wie mache ich das? Muss ich doch erst eine Fourier Berechnung durchführen und wenn ja, wie integriere ich die Funktion yt1? Bei mir kommt der Fehler, dass er die Methode "int" nicht durchführen kann, weil die eingegeben Argumente in "double" sind...

Grüße
Ovid
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.01.2012, 19:09     Titel:
  Antworten mit Zitat      
Hallo,

jetzt habe ich mich oder das Forum mich ausgetrickst.

Jedenfalls: du solltest dir den Befehl FFT ansehen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Ovid
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 81
Anmeldedatum: 25.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2012, 19:16     Titel:
  Antworten mit Zitat      
Aber FFT ist doch für Fourier Transformationen, die brauche ich doch gar nicht, oder...?

Grüße
Ovid
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.01.2012, 19:35     Titel:
  Antworten mit Zitat      
Hallo,

vielleicht doch?
Code:

... da ist sogar vom "amplitude spectrum" die Rede.

Auch eine Google-Suche von "amplitude spectrum" matlab führt darauf. Du kannst es aber natürlich auch anders versuchen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Ovid
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 81
Anmeldedatum: 25.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2012, 19:46     Titel:
  Antworten mit Zitat      
Nun ja, ich glaube halt nicht, das wir mit fft das machen sollen. Alle Aufgaben, auf diesem Aufgabenblatt, haben wir ohne fft gemacht. Ich denke auch, dass man das irgendwie anders hinbekommt. Schliesslich bekomme ich die Funktion auch geplottet, jetzt müsste Matlab doch nur die Amplitude eines Sinus Signals davon ablesen und als Spektrum ausgeben können...geht das nicht? Wie gesagt, mit FFT sollen wir, denke ich mal, nicht arbeiten, wenn dann hätte unser Dozent uns schon darauf hingewiesen.

Grüße
Ovid
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.01.2012, 20:10     Titel:
  Antworten mit Zitat      
Hallo,

ich kenne mich bei Signalverarbeitung an sich nicht besonders aus. Allerdings denke ich, dass du ein Großteil der Arbeit schon getan ist. Schau mal hier:
http://de.wikipedia.org/wiki/Freque.....al_mit_diskretem_Spektrum

Blöde Frage: warum bittest du nicht den Dozenten um Hilfe oder arbeitest mit Kommilitonen zusammen?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2, 3  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.