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

Probleme mit Semesteraufgabe "stehende Wellen"

 

pat300484

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2011, 01:39     Titel: Probleme mit Semesteraufgabe "stehende Wellen"
  Antworten mit Zitat      
hallo,

ich habe folgendes problem:
ich soll als projektarbeit eine simulation stehender wellen programmieren und komme aktuell nicht mehr weiter.
der aufgabentext lautet wie folgt:

die gleichung einer stehenden welle mit modenzahl m ist:
y = c * sin(( m * pi * x) / L) * sin(( m * 2 * pi * t) / T)
erzeugen sie animationen für stehende wellen mit m=1, m=2, m=3 und m=4 und probieren sie auch überlagerungen, wenn z.b. die wellen mit m=1 und m=3 gleichzeitig auftreten.

ich bin absoluter matlab-neuling, habe aber bereits einiges gelernt und hänge meinen erarbeiteten quellcode mal an:

die variablen L und T waren in der aufgabe gegeben

Code:

clear;
close all;

m=2;

c=1;
L=100;
T=64;

count_x=L;
count_t=15;
count_movie=0;

x=1:L;
t=1:15;

for t=1:count_t;
    axis([0 L -c-0.5 c+0.5]);    
       
    for x=1:count_x;        
        y=c*sin((m*pi*x)/L)*sin((m*2*pi*t)/T);    
        plot(x,y);
        hold on;    
        M(x) = getframe;        
    end    
   
end


while count_movie < 2
    count_movie=count_movie+1;
    movie(M,-1);
end
 


momentan frage ich mich, wieso die kurve gepunktet und nicht durchgezogen ist und wieso mir matlab 8 kurven auf einmal zeichnet statt nacheinander und die vorhergehende nicht ausblendet.


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 23.12.2011, 09:45     Titel:
  Antworten mit Zitat      
Wg Punkte vs. durchgezogen: Jeder PLOT Befehl zeichnet in diesem Code exakt einen Punkt. Es ist also keine gepunktete Liniie, sondern "ein Haufen Punkte".

Normalerweise würde ich alle y erst berechnen und erst hinterher plotten. Da hier aber die Enstehung als Film aufgezeichnet werden soll, gilt es in der inneren Schleife immer ein Geraradenstück vom letzten Punkt bis zum aktuellen Punkt zu zeichnen. Der letzte Punkt muss also zwischengespeichert werden.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 23.12.2011, 09:47     Titel:
  Antworten mit Zitat      
Da HOLD ON gewählt wurde, gilt das für den kompletten Plot. Wenn also die zweite Welle geplottet werden soll ohne die erste Welle, könnte man an geeigneter Stelle HOLD OFF setzen.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gest4124

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2011, 16:32     Titel:
  Antworten mit Zitat      
ich habe das mal nach deiner Vorlage ein bisschen umgestellt, damits mal einigermaßen läuft. schön ists aber nich gerade.
Die movie() Schleife macht mal so garkeinen Sinn.
Wie mein Vorposter schon sagte, hier ists sinnvoller, erst die komplette Funktion zu zeichnen und dann nen Bild aufzunehmen. und nicht jeden einzelnen Punkt.

Code:
clear; close all; clc;
 
 m=8;
 c=1;
 L=100;
 T=64;
 x=1:L;

for t=1:T;
     y=zeros(1,L);
     for m=1:m;        
         y=y+c*sin((m*pi*x)/L)*sin((m*2*pi*t)/T);    
         plot(x,y);
         axis([0 L -5 5]);
     end  
         M(t) = getframe;  
end
movie(M,-1);
 
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.12.2011, 18:43     Titel:
  Antworten mit Zitat      
Hallo Gest4124,

Nur eine Nebenfrage: Wozu verwendest Du "clear; close all; clc;"? Ich sehe dies so oft im Forum. Es ist auf jeden Fall hilfreich, dass nicht per "clear all" alles aus dem Speicher gelöscht wird. Aber für das eigentliche Programm ist dieses generelle Aufräumen nicht sachdienlich.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Scriptor
Forum-Century

Forum-Century


Beiträge: 217
Anmeldedatum: 22.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.12.2011, 12:41     Titel:
  Antworten mit Zitat      
Dem muss ich kurz was entgegenstellen. Als ich anfing mit Matlab zu arbeiten und die Übersicht irgendwann schwierig wird, schreibe ich zu Beginn beinahe immer M-Files, wo ich mit einem alles was ich bewerkstelligen will mache. Da wird es manchmal sehr unübersichtlich. Alte Werte schleichen sich in Variablen ein, die nicht gelöscht wurden aber eigentlich neu berechnet wurden aber trotzdem spinnt irgendwas rum, alte offene GUIs nerven und kleistern die Startleiste zu, man kann nicht ordnen, ob die Fehlermeldungen vom vorherigen oder vom jetzigen Durchlauf kommen.

So kriegt man für jeden Testversuch einen cleanen Cut hin, indem man einfach alle Variablen löscht und neu erstellt, nur die GUIs vor sich hat die man braucht und die alten Fehlermeldungen löscht, da man sie eh idR bearbeitet hat.

Also für mich gestaltet sich das Proggen wirklich entspannter dadurch.

Grüße und frohes Restfest.

Scriptor
Private Nachricht senden Benutzer-Profile anzeigen
 
pat300484

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.12.2011, 22:34     Titel:
  Antworten mit Zitat      
danke für eure hilfe,

nach kleiner umstrukturierung und abänderung läuft das programm jetzt exakt so, wie ich es mir vorgestellt habe. super sache!

nachträglich frohe weihnachten und schöne feiertage.
und ein frohes neues jahr.
 
Neues Thema eröffnen Neue Antwort erstellen



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.