|
|
| Ovid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 81
|
 |
|
 |
Anmeldedatum: 25.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.01.2012, 20:43
Titel:
|
 |
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
|
|
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.01.2012, 22:11
Titel:
|
 |
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
|
|
|
|
| Andy386 |

Forum-Guru
|
 |
Beiträge: 485
|
 |
|
 |
Anmeldedatum: 24.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.1/8
|
 |
|
|
 |
|
Verfasst am: 22.01.2012, 02:20
Titel:
|
 |
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...
|
|
|
|
| Ovid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 81
|
 |
|
 |
Anmeldedatum: 25.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.01.2012, 21:43
Titel:
|
 |
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
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 26.01.2012, 02:33
Titel:
|
 |
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
|
|
|
|
| Ovid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 81
|
 |
|
 |
Anmeldedatum: 25.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.01.2012, 15:32
Titel:
|
 |
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
|
|
|
|
| Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 26.01.2012, 15:40
Titel:
|
 |
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
|
|
|
|
| Ovid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 81
|
 |
|
 |
Anmeldedatum: 25.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.01.2012, 15:44
Titel:
|
 |
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?
|
|
|
|
| Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 26.01.2012, 16:09
Titel:
|
 |
das problem ist das gleiche wie oben du hast nur die zahlen geändert.
|
|
|
|
| Ovid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 81
|
 |
|
 |
Anmeldedatum: 25.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.01.2012, 16:37
Titel:
|
 |
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
| Beschreibung: |
|
 Download |
| Dateiname: |
untitled.jpg |
| Dateigröße: |
18.36 KB |
| Heruntergeladen: |
456 mal |
|
|
|
|
| Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 26.01.2012, 16:43
Titel:
|
 |
|
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.
|
|
|
|
| Ovid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 81
|
 |
|
 |
Anmeldedatum: 25.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.01.2012, 16:46
Titel:
|
 |
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
|
|
|
|
| Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 26.01.2012, 16:50
Titel:
|
 |
du solltest dir nochmal überlegen was als matrix rauskommt und was du plotten willst
wird nicht das machen was du willst.
sollte ehr an das kommen was du willst
|
|
|
|
| Ovid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 81
|
 |
|
 |
Anmeldedatum: 25.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.01.2012, 16:57
Titel:
|
 |
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
| Beschreibung: |
|
 Download |
| Dateiname: |
untitled2.jpg |
| Dateigröße: |
15.35 KB |
| Heruntergeladen: |
471 mal |
|
|
|
|
| Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 26.01.2012, 17:04
Titel:
|
 |
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]
|
|
|
|
|
Gehe zu Seite Zurück 1, 2, 3 Weiter
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|