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

Speicher von Variablen in For Schleife

 

Josefl
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 26.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2011, 17:51     Titel: Speicher von Variablen in For Schleife
  Antworten mit Zitat      
Hallo,

bin langsam am verzweifeln. Kann in der For-Schleife die Variable von einer Funktion nicht speichern. Habe es schon recherchiert und leider bis jetzt nichts finden können.

Folgendes: Ich habe eine Anfangsschleife gebildet, die auf weitere Funktionen zugreift:
Code:

for i = 1:length(s)
     
s_in_web_run        = s(i)*0.5;
v                   = v_i(j) ;            
a                   = a_i(k);          
strokes_per_min     = st_p_m(l);            


max_s_in_web(i) = fcn_max_s_inweb(i,s(i),v,a,jolt,strokes_per_min,s_in_web_run);

end
 

und in der Unterfunktion,

Code:

function [ap_t,p_t,v_t] = polyval_abs_up(i,pol_norm,t_end,p2,t,vis)
pol_norm_p  = diff_pol(pol_norm);
pol_norm_pp = diff_pol(pol_norm_p);
pol_norm_ppp = diff_pol(pol_norm_pp);
p_t = polyval(pol_norm,1/t_end*t)*p2;
v_t = polyval(pol_norm_p,1/t_end*t)*p2*(1/t_end);
ap_t  = polyval(pol_norm_ppp,1/t_end*t)*p2*(1/t_end)^3;
         
a_t_up = polyval(pol_norm_pp,1/t_end*t)*p2*(1/t_end)^2' ;   (23X4001 single)
 


möchte ich alle a_t_up Werte speichern. Bisher wurde die Werte immer wieder überschrieben. Ich habe es mal mit einer For Schleife oder eval usw versucht, komme aber nicht auf einen grünen Ast. Leider lag es an der Eingabe, irgendwie bekomme ich das nicht in den Griff und würde mich daher über jeden Vorschlag freuen.

Gruß
J.L

edit bei denny: Bitte Code-Umgebung verwenden. Danke
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 26.07.2011, 18:10     Titel:
  Antworten mit Zitat      
Variablen innerhalb von Funktionen werden nur lokal im Worspace angelegt und beim Verlassen der Funktion wieder gelöscht.

Du kannst du gewünschte Variable entweder mit in den Funktionsoutput definieren (wie du das auch schon mit anderen Parametern gemacht hast).

Edit: mit
Code:
geht es wohl doch nicht...
Private Nachricht senden Benutzer-Profile anzeigen
 
Josefl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 26.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2011, 19:32     Titel: habe es schon mal versucht mit save ...
  Antworten mit Zitat      
Hallo,
danke für die Antwort. Ich habe schon mal sowas ähnliches versucht, indem ich save a_t_up in der Funktion ausgeführt habe und in der Hauptschleife load a_t_up ... kein Ahnung irgendwie muss man das per
array, struct oder so machen ...

a_t_up.i
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 26.07.2011, 19:53     Titel:
  Antworten mit Zitat      
In deinem Bsp ist leider nicht ersichlich, wo die Unterfunktion aufgerufen wird. Schreib die Variable doch mit in den Output

Code:

function [a_t_up,ap_t,p_t,v_t] = polyval_abs_up(i,pol_norm,t_end,p2,t,vis)
....
end

% In einer anderen Funktion:
% in der Funktion wo polyval_abs... mehrfach in einer Schleife aufgrufen wird, hast du dann a_t_up
m=1;
for i...
[...] =polyval_abs_up(...)
l=length(a_t_up) % Wenn es ein Vektor ist
all_a_t_up(m:m+l) = a_t_up
m=m+l;
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Josefl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 26.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2011, 22:02     Titel: Das ist die vierte Unterfunktion
  Antworten mit Zitat      
Hallo,

also wenn ich das mit Output mache sagt er mir das ich den Output zu oft benutze. Ich habe es mal so versucht:
Code:

for i = 1:length(s)

   
s_in_web_run        = s(i)*0.5;
v                   = v_i(j) ;            
a                   = a_i(k);          
strokes_per_min     = st_p_m(l);

max_s_in_web(i) = fcn_max_s_inweb(i,s(i),v,a,jolt,strokes_per_min,s_in_web_run);

load a_t_up
 
for m= 1:length(a_t_up)

all_a_t_up(m) = a_t_up;

m=m+1;

end
end
 


Dann meldet Matlab:
??? Subscripted assignment dimension mismatch.

Error in ==> test at 38
all_a_t_up(m) = a_t_up;

und wenn ich a_t_up(i) eintrage bekomme ich einen Vektor (1x4001) und nicht (23x4001) die Werte sind const.
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 26.07.2011, 23:07     Titel:
  Antworten mit Zitat      
Kennt der m-file über load die Variable a_t_up überhaupt? Ich habe das bisher so noch nie gemacht. Falls das nicht geht, fällt mir jetzt nur eine unschöne Möglichkeit ein. Die Variable a_t_up von jeder Funktion über den Parameteroutput durchzuschleifen, bis sie hier landet. Evtl. kennt ja jemand eine bessere Lösung.

a_t_up ist 4001 Werte lang und der Laufindex i geht von 1...23?
Dann sollte das Speichern so gehen. Dann erhält man eine Matrix mit 23 Zeilen a 4001 Werten


Code:

for i = 1:length(s)
   
s_in_web_run        = s(i)*0.5;
v                   = v_i(j) ;            
a                   = a_i(k);          
strokes_per_min     = st_p_m(l);

max_s_in_web(i) = fcn_max_s_inweb(i,s(i),v,a,jolt,strokes_per_min,s_in_web_run);

load a_t_up

all_a_t_up(i,1:length(a_t_up)) = a_t_up;

end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Josefl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 26.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2011, 09:00     Titel: Super. Es funktioniert
  Antworten mit Zitat      
Ja das mit dem Laden geht ganz gut.

Vielen herzlichen Dank

Gruß
Josef L.
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.