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
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 81
Anmeldedatum: 25.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2012, 20:43     Titel:
  Antworten mit Zitat      
Ich arbeite mit meinen Kommilitonen ja zusammen, nur haben die auch leider zu tun, sodass sie mir nicht viel helfen können.

Inzwischen habe ich folgendes verändert:

[code]
syms t
f=440;
w=2*pi*f;
T=1/f;

yt1=sin(w*t);

a0=int(yt1,t,0,2)*1/T;
a0=double(a0)
ak=int(yt1*cos(w*t),t,0,2)*1/T;
bk=int(yt1*sin(w*t),t,0,2)*1/T;
Ak=sqrt(ak.^2+bk.^2);
Ak=double(Ak)
ezplot(yt1)
stem(Ak)
[/code]

a0, ak und bk sind meine Koeffizienten. t ist mal wieder symbolisch, weil ich sonst Probleme beim integrieren habe.
Geplottet sieht die Funktion auch gut aus, nur beim Spektrum fehlen die restlichen Geraden der Amplituden...
Vielleicht bekommen wir das ja noch hin ^^

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, 22:11     Titel:
  Antworten mit Zitat      
Hallo,

ich habe dir doch gezeigt, wie du numerisch integrieren kannst.

Wenn du eine Sinus-Funktion verwendest, wirst du im Spektrum auch nur einen Peak sehen. Ich halte das für nicht sehr sinnvoll.

Wenn du ak und bk berechnest, sollte auf die rechte Seite wohl auch das k rein?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 22.01.2012, 02:20     Titel:
  Antworten mit Zitat      
btw.: wenn du dein Signal ausgeben willst, was denkst du, wieviele Funktionen zur Soundausgabe mit symbolischen Bezeichnern arbeiten werden wollen?
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
Ovid
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 81
Anmeldedatum: 25.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.01.2012, 21:43     Titel:
  Antworten mit Zitat      
Also, ich hab jetzt mal ein Bsp aus dem Skript meines Profs genommen und versucht, numerisch zu integrieren. Ich denke, wenn ich das berechnen kann, dann kann ich auch die Aufgabe des Projektes lösen. ^^ Allerdings habe ich ein Problem mit den Matrix Dimensionen und ich weiß nicht, wo der "Dimensionsfehler" liegt.

Ich hoffe ihr könnt mir da helfen.

Hier der Code:

[code]T=2*pi;
n=7;
w=2*pi/T;
t=0:0.1:pi; %das sind meine Integrationsgrenzen
a0=trapz(sin(t))/T
a0=double(a0)
k=1:n;
a=trapz(sin(t)*cos(k*w*t))*2/T
a=double(a)
k=1:n;
b=trapz(sin(t)*sin(k*w*t))*2/T
b=double(b[/code]

Und das ist der Fehler:

??? Error using ==> mtimes
Inner matrix dimensions must agree.

Wo ist der Fehler?

EDIT: Ich glaube, ich habe den Fehler gefunden. k ist 9 Spalten lang, t allerdings nur 5. Wie kann ich das verändern...?

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: 26.01.2012, 02:33     Titel:
  Antworten mit Zitat      
Hallo,

du wirst nicht um eine for-Schleife über k herumkommen - so wie ich es bereits vorher beschrieben habe.

Zudem wirst du .* statt * verwenden müssen.

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: 26.01.2012, 15:32     Titel:
  Antworten mit Zitat      
Also das mit dem .* hat schonmal geklappt.

Allerdings, der Fehler ist wieder da, nur etwas anders...:

??? Error using ==> times
Matrix dimensions must agree.

Das hab ich eingegeben:

[code]T=2*pi;
n=7;
w=2*pi/T;
t=0:0.1:pi;
a0=trapz(sin(t))/T
a0=double(a0)
k=1:n;
a=trapz(sin(t).*cos(k.*w.*t)).*2/T[/code]

Liegt es wirklich nur an einer for Schleife?
Das witzige daran, vorhin hatte es noch funktioniert...nur nach einem Neustarts Matlab jetzt nicht mehr.

Grüße
Ovid
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 26.01.2012, 15:40     Titel:
  Antworten mit Zitat      
Code:

k hat 7 elemente w hat eins also kannst du dir da ein .* sparen. t hat 32 elemente. t*w.*k geht also nicht k und t müssen ja zum elementweisen multipliziren auch die selbe anzahl von elementen haben
Private Nachricht senden Benutzer-Profile anzeigen
 
Ovid
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 81
Anmeldedatum: 25.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2012, 15:44     Titel:
  Antworten mit Zitat      
Obwohl ich glaube, es ist besser, zur eigentlichen Aufgabe zurück zu kehren.
Das Beispiel müssen wir morgen schliesslich nicht abgeben.

Also. Die Aufgabe hat sich etwas verändert, aber das Problem ist das selbe.

Das hab ich geschrieben:

[code]t=0:0.1:2;
n=1:10;
k=(2*n)-1;
f=220;
y=sign(sin(2*k.*pi*f.*t))[/code]

Das gibt Matlab als Fehler wieder mal aus:

??? Error using ==> times
Matrix dimensions must agree.

Das Problem liegt mal wieder an k. Wie bekomme ich die gleiche Anzahl an Elementen hin, ohne eine for Schleife schreiben zu müssen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 26.01.2012, 16:09     Titel:
  Antworten mit Zitat      
das problem ist das gleiche wie oben du hast nur die zahlen geändert.
Code:
t=0:.1:2;
n=1:10;
k=2*n-1;
k=repmat(k',1,size(t,2));
t=repmat(t,size(k,1),1);
f=220;
y=sign(sin(2*pi*f*k.*t))
Private Nachricht senden Benutzer-Profile anzeigen
 
Ovid
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 81
Anmeldedatum: 25.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2012, 16:37     Titel:
  Antworten mit Zitat      
Hm..das sieht schon so aus, wie es sein sollte, glaube ich zumindest...^^

Nur der Plot sieht komisch aus..eigentlich müsste da ein Rechtecksignal rauskommen. Nur warum sind die Gearden außerdem farbig?

Bild siehe Dateianhang Smile

untitled.jpg
 Beschreibung:

Download
 Dateiname:  untitled.jpg
 Dateigröße:  18.36 KB
 Heruntergeladen:  456 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 26.01.2012, 16:43     Titel:
  Antworten mit Zitat      
verstest du denn was als matrix rauskommt? da ich deinen code nicht kenne weis ich nicht was du geplottest hast aber sihst so aus als hättest du sachen miteinander vertauscht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Ovid
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 81
Anmeldedatum: 25.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2012, 16:46     Titel:
  Antworten mit Zitat      
Nun ja...in der Matrix sind die "Ergebnisse" des sign Befehls drin, 0,-1 und 1.
Als eine riesen Matrix 10*21.
Ich hab das so geplottet:

[code]plot(t,y)[/code]

t sind ja meine x-Werte, y ist halt die Matrix.

Grüße
Ovid
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 26.01.2012, 16:50     Titel:
  Antworten mit Zitat      
du solltest dir nochmal überlegen was als matrix rauskommt und was du plotten willst
Code:
wird nicht das machen was du willst.
Code:
plot(t(1,:),y(1,:))
sollte ehr an das kommen was du willst
Private Nachricht senden Benutzer-Profile anzeigen
 
Ovid
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 81
Anmeldedatum: 25.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2012, 16:57     Titel:
  Antworten mit Zitat      
Okay, allerdings sieht das Signal immer noch komisch aus. Die Linien sind schräg...?
Eigentlich sollte ein Rechtecksignal herauskommen, da sign den Wert von y überprüft in Hinsicht auf das Vorzeichen. Ich wundere mich sowieso, warum die Matrix so groß ist. Die Terme gehen doch nur von 1 bis 19, also sollen alle ungeraden Terme ausgeben, das soll das k regeln. Warum also ist die Matrix so groß?

Und was bedeutete eigentlich das (1,: )?

Grüße
Ovid

untitled2.jpg
 Beschreibung:

Download
 Dateiname:  untitled2.jpg
 Dateigröße:  15.35 KB
 Heruntergeladen:  471 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 26.01.2012, 17:04     Titel:
  Antworten mit Zitat      
das bedeutet das die ersten zeilen gegeneinander geplottet werden

und ja die linien müssen schräg sein. du machst ja einen kontinuirlichen plot von nem unkontinuirlichen signal. die punkte werden einfach nur miteinander verbunden. und der sprung von 0 auf 1 ist halt schräg da zwischen 0 und 1 ja 100ms vergehen. du solltest die nochmal das grundlagen tutorial von matlab angucken. da steht drin was (:,1) und so weiter bedeutet.[/code]
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  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.