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

Differentialgleichungssystem 1. Ordnung

 

Dîger
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2013, 17:46     Titel: Differentialgleichungssystem 1. Ordnung
  Antworten mit Zitat      
Ich hab ein Differentialgleichungssystem 1. Ordnung.
Mit:
[t,x]=ode45(@(t,x)ode(t,x),linspace(0,5,NT),AB)
Mit NT Anzahl der Zeitschritte und AB der Anfangsbedingung erhalte ich eine matrix mit den Lösungen zu einem bestimmten Zeitpunkt in der jeweiligen Zeile.
Im 2D Fall meckert der nun
Subscripted assignment dimension mismatch.

Error in GLfu2D (line 7)
u1(1:N+1,1:N+1)=ak;

Meine function Datei sieht so aus:
Code:

function dakdt = GLfu2D(t,ak,b,q,q0,N)
u1=zeros(2*N+1);
u1(1:N+1,1:N+1)=ak;
u2=ifft2(fft2(exp(q0.*t).*u1).^2); % Faltung beider uks
u3=zeros(2*N+1);
u3(1:N+1,1:N+1)=u2(N/2+1:3/2*N+1,N/2+1:3/2*N+1); % Hauptteil der Faltung im 2N+1 komp. Vektor mit Rest Nullen
u4=ifft2(fft2(rot90(conj(exp(q0.*t).*u1),2)).*fft2(u3));
dakdt=0*t-(1+1i*b)*exp(-q.*t).*u4(N/2+1:3/2*N+1,N/2+1:3/2*N+1);
% dakdt=0*t-v*(k.^2).*ak-conv(1i*k.*ak,ak,'same');
 


Skript-Datei:
Code:

L=200;
w=2*pi/L;
a=0;
b=-1.5;
N=30;
NT=150;
one=ones(N+1,1);
k=[0:N/2 -N/2:-1];
k1=one*k;
kx=1i*w*k1;
ky=1i*w*k1';
q=(1+(1+1i*a)*(kx.^2+ky.^2));
q0=zeros(2*N+1);
q0(1:N+1,1:N+1)=q;
%ak=zeros(N+1);
x=L/(N+1)*(-N/2:N/2); % x-Intervall definieren
y=L/(N+1)*(-N/2:N/2); % y-Intervall definieren
[X,Y]=meshgrid(x,y);
%AB=quadv(@(y)GLAB(y,k),0,2*pi);
AB=ifft2(ones(N+1))+1/100*rand(N+1);
s=cell(1,NT);
s=ode45(@(t,ak)GLfu2D(t,ak,b,q,q0,N),linspace(0,5,NT),AB);
 


Ich dachte ich speicher die Lösungen in einem cell. Aber das scheint wohl irgendwie nicht ganz richtig zu sein
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.07.2013, 21:27     Titel:
  Antworten mit Zitat      
Hallo,

in der besagten Zeile ist ak 961x1, du willst aber in einen 31x31 - Bereich schreiben. Das passt nicht zusammen.

Du kannst ja den Debugger nutzen, um solche Probleme zu analysieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Dîger
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2013, 22:22     Titel:
  Antworten mit Zitat      
Danke erstmal. Versteh nicht so ganz wieso der daraus nen (31*31)x1 Vektor macht.
Kann der nicht gleich mit Matrizen arbeiten?
die fft2s beziehen sich ja nur auf matrizen.

und eine doofe frage bzgl. des debuggers Sad
wo find ich den?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.07.2013, 22:46     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Kann der nicht gleich mit Matrizen arbeiten?

Bei DGLen anscheinend nicht.

Zitat:
und eine doofe frage bzgl. des debuggers
wo find ich den?

Der Debugger wird aktiviert, wenn ein Breakpoint (gesetzt durch Klick auf den Strich vor einer Zeile) erreicht wird. Solche Fragen kann man sich aber in der Doku auch wunderbar selbst beantworten ;)

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Dîger
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2013, 23:32     Titel:
  Antworten mit Zitat      
Ich hab den Debugger nichtmal für Matlab in der help gefunden.
nur für simulink. Hast du denn eine Idee für nen workaround was die DGL angeht?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.07.2013, 08:26     Titel:
  Antworten mit Zitat      
Hallo,

siehe hier:
http://www.mathworks.com/help/matla.....process-and-features.html

Du könntest die Matrix mit reshape in die benötigte Form bringen:
Code:
out = reshape(in, 31, 31)


Achtung: du musst am Ende auch wieder einen Vektor zurückgeben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 11.07.2013, 09:44     Titel:
  Antworten mit Zitat      
Hallo Dîger,

Der Debugger ist ein wichtiges Programmier-Werkzeug. Ich kann mir ein sinnvolles Arbeiten mit einer Programmiersprache ohne Debugger nicht vorstellen.

Einerseits findet man die Debuggerbefehle in der Menü-Leiste des Editors. Dann kann man noch in der Dokumentation suchen lassen:
Code:
docsearch debug

Man findet dann auch die Befehle dbstop, dbclear etc.

Besonders praktisch ist es Matlab direkt beim Fehler stoppen zu lassen:
Code:

Dann kann man dierkt die lokal benutzten Variablen untersuchen, indem man die Ausdrücke z.B. ins CommandWindow kopiert.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
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.