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

Werte zu einem Vektor verketten

 

Paul_ME
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 11.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2020, 18:51     Titel: Werte zu einem Vektor verketten
  Antworten mit Zitat      
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:

Vektor = [T1(t=t0);
T2(t=t0);
T3(t=t0);
T4(t=t0);
T5(t=t0);
T6(t=t0)]

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:

Vektor = [T1(t=t0);
T2(t=t0);
T3(t=t0);
T4(t=t0);
T5(t=t0);
T6(t=t0);
T1(t=t1);
T2(t=t1);
T3(t=t1);
T4(t=t1);
T5(t=t1);
T6(t=t1)]

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 Rolling Eyes

Danke schon mal für eure Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

mein Vorschlag wäre an geeigneter Stelle:
Code:
Vektor = [Vektor; neueWerte]

im Grunde also in der Tat vertcat.

Zitat:
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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Paul_ME
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 11.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2020, 22:32     Titel:
  Antworten mit Zitat      
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. Confused Sad
An welcher Stelle muss ich die Funktion vertcat schreiben? Vor dem letzten end? Vielen Dank nochmal!


Code:

t = 0;
t_step = 0.5 * 3600;
N_time = 1;

while t <= t_process
   
% time integration with Matlab-ODE-Solver ode15s (stiff systems:
[t, Y] = ode15s(@(t,Y)PDESys_Paula(t, Y, L, W, epsilon, d_hydr, h_htx, a,b,f,...
                d_part,tau, N_z, N_x, z, dz, x, dx, p_in_Value, T_in_htf,...
                u_in_htf, N_z_plt, z_plt, dz_plt, T_plate, L_plt,...
                p_th_set_Value, T_htf_out_set_Value, geoCase, htxCase,...
                pinCase, procCase, contCase, pltCase, mtlCase, t_wait, R_vap, m_zeo,      H_F, T_F, N_htx),...                
                [(N_time-1)*t_step N_time*t_step], IC);                          

           
%% Saving results:
% -------------------------------------------------------------------------

N_t          = length(t);
t_sol        = zeros(N_t, 1);              % initializing solution vector for time t
X_sol       = zeros(N_t, N_z, N_x);   % initializing solution vector for water uptake X
T_sol        = zeros(N_t, N_z, N_x);  % initializing solution vector for temperature T
p_sol        = zeros(N_t, N_z, N_x);  % initializing solution vector for pressure p
T_htf_sol   = zeros(N_t, N_z+ N_z_plt); % initializing solution vector for htf T
p_in_sol    = zeros(N_t, 1);  % initializing solution vector for inlet pressure p_in
T_plt_sol    = zeros(N_t, N_z_plt, N_x);
T_VK_sol   = zeros(N_t, 1); % initializing solution vector for boiler temperature
m_wat_VK_sol = zeros(N_t, 1);      

for k = 1:1:N_t
   
    t_sol = t(k);               % save time vector
       
    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

   
    T_htf_sol(k,1:N_z+N_z_plt) = Y(k,((3*N_z)*(N_x)+1):((3*N_z)*(N_x)+(N_z+N_z_plt)));
   
    % 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

N_time = N_time + 1;

end

end

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Paul_ME
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 11.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2020, 23:41     Titel:
  Antworten mit Zitat      
Danke Harald, ich habe es jetzt hingekriegt! Very Happy
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 - 2024 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.