Verfasst am: 11.02.2020, 18:51
Titel: Werte zu einem Vektor verketten
Hallo zusammen,
auch ich verwende Matlab seit kurzem und komme an einer Stelle nicht weiter. In meinem Code wird ein thermodynamischer Prozess an einer Gitterstuktur berechnet (2-dimensionales Feld). Am Ende ergibt der Code einen Vektor, der Temperaturwerte beinhaltet.
Wenn das Gitter beispielsweise 6 Berechnungspunkte hat (2 in vertikaler Richtung und 3 in horizontaler Richtung), würde der Vektor so aussehen:
Nun sollen alle diese Werte für den nächsten Zeitschritt berechnet werden und zum Vektor hinzugefügt werden ohne die alten Werte zu überschreiben! Der Verktor soll dann so aussehen:
Ich habe versucht die Funktion vertcat anzuwenden, aber leider erfolglos. Der Vektor mit den Temperaturwerten wird außerdem in einer for-Schleife gebildet und ich glaube, dass ich die Funktion vertcat entweder falsch anwende oder an der falschen Stelle setze
Ich habe versucht die Funktion vertcat anzuwenden, aber leider erfolglos. [...] ich glaube, dass ich die Funktion vertcat entweder falsch anwende oder an der falschen Stelle setze
Da du weder schreibst, wie du die Funktion anwendest noch wo du sie anwendest noch was passiert, wenn du dies tust, ist es äußerst schwierig dir zu helfen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Hallo Harald,
der Code ist ein bisschen kompliziert. Deswegen wollte ich den nicht schreiben. Nach jedem Durchlauf der while-Schleife, wird ein Vektor für die jeweiligen Größen t_sol, X_sol, T_sol, p_sol, T_htf_sol, p_in_sol, T_plt_sol, T_VK_sol und m_wat_VK_sol erstellt.
Alle diese Vektoren sollen bei jedem Durchlauf der while-Schleife erweitert werden ohne die alten Werte zu überschreiben.
An welcher Stelle muss ich die Funktion vertcat schreiben? Vor dem letzten end? Vielen Dank nochmal!
for i = 1:1:N_x
X_sol(k,1:N_z,i) = Y(k,((3*N_z)*(i-1)+1):((3*N_z)*(i-1)+N_z)); % save solution for water uptake X
T_sol(k,1:N_z,i) = Y(k,((3*N_z)*(i-1)+(N_z+1)):((3*N_z)*(i-1)+2*N_z)); % save solution for temperature T
p_sol(k,1:N_z,i) = Y(k,((3*N_z)*(i-1)+(2*N_z+1)):((3*N_z)*(i-1)+3*N_z)); % save solution for pressure p end
% plate for i = 1:1:N_x
T_plt_sol(k,1:N_z_plt,i) = Y(k,((3*N_z)*(N_x)+(N_z+N_z_plt)+N_z_plt*(i-1)+1):((3*N_z)*(N_x)+(N_z+N_z_plt)+(N_z_plt*(i-1)+N_z_plt)));
end
p_in_sol(k,1) = Y(k,end-2);
T_VK_sol(k,1) = Y(k,end-1);
m_wat_VK_sol(k,1) = Y(k,end);
end
ein Problem ist hier, dass du mit den zeros-Befehlen die Variablen immer wieder komplett überschreibst. Da kannst du vertcat verwenden wie du willst, das bringt nichts.
Du könntest eine zusätzliche Variable einführen, in der du alle Daten speicherst, im Vorschlag "Vektor".
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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
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.