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

Variable in Dateinamen

 

Andromeda

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.05.2017, 15:49     Titel: Variable in Dateinamen
  Antworten mit Zitat      
Hallo zusammen,

ich stehe vor einem wahrscheinlich recht einfachen Problem, aber ich komm leider nicht dahinter...


Ich habe bisher recht umständlich verschiedene Vektoren mit Werten aus verschiedenen Matrixen zusammenkopiert und würde folgende Struktur gerne vereinfachen:


Code:
nu_ue_tfilm_DS_Fluid00=[Fluid00{s,n} Fluid00{s+1,n} Fluid00{s+2,n} ...
                        Fluid00{s+3,n} Fluid00{s+4,n} Fluid00{s+5,n} ...
                        Fluid00{s+6,n} Fluid00{s+7,n} Fluid00{s+8,n} ...
                        Fluid00{s+9,n}]';
                     
nu_ue_tfilm_DS_Fluid02=[Fluid02{s,n} Fluid02{s+1,n} Fluid02{s+2,n} ...
                        Fluid02{s+3,n} Fluid02{s+4,n} Fluid02{s+5,n} ...
                        Fluid02{s+6,n} Fluid02{s+7,n} Fluid02{s+8,n} ...
                        Fluid02{s+9,n}]';
                     
nu_ue_tfilm_DS_Fluid04=[Fluid04{s,n} Fluid04{s+1,n} Fluid04{s+2,n} ...
                        Fluid04{s+3,n} Fluid04{s+4,n} Fluid04{s+5,n} ...
                        Fluid04{s+6,n} Fluid04{s+7,n} Fluid04{s+8,n} ...
                        Fluid04{s+9,n}]';  
                     
nu_ue_tfilm_DS_Fluid06=[Fluid06{s,n} Fluid06{s+1,n} Fluid06{s+2,n} ...
                        Fluid06{s+3,n} Fluid06{s+4,n} Fluid06{s+5,n} ...
                        Fluid06{s+6,n} Fluid06{s+7,n} Fluid06{s+8,n} ...
                        Fluid06{s+9,n}]';  
                     
nu_ue_tfilm_DS_Fluid08=[Fluid08{s,n} Fluid08{s+1,n} Fluid08{s+2,n} ...
                        Fluid08{s+3,n} Fluid08{s+4,n} Fluid08{s+5,n} ...
                        Fluid08{s+6,n} Fluid08{s+7,n} Fluid08{s+8,n} ...
                        Fluid08{s+9,n}]';                      
                     
nu_ue_tfilm_DS_Fluid10=[Fluid10{s,n} Fluid10{s+1,n} Fluid10{s+2,n} ...
                        Fluid10{s+3,n} Fluid10{s+4,n} Fluid10{s+5,n} ...
                        Fluid10{s+6,n} Fluid10{s+7,n} Fluid10{s+8,n} ...
                        Fluid10{s+9,n}]';                      
                     
nu_ue_tfilm_DS_Fluid12=[Fluid12{s,n} Fluid12{s+1,n} Fluid12{s+2,n} ...
                        Fluid12{s+3,n} Fluid12{s+4,n} Fluid12{s+5,n} ...
                        Fluid12{s+6,n} Fluid12{s+7,n} Fluid12{s+8,n} ...
                        Fluid12{s+9,n}]';
 


Ich dachte dabei an eine Schleife nach dem Muster:
Code:

for i=00:02:12
nu_ue_tfilm_DS_Fluid$i=[Fluid$i{s,n} Fluid$i{s+1,n} Fluid$i{s+2,n} ...
                        Fluid$i{s+3,n} Fluid$i{s+4,n} Fluid$i{s+5,n} ...
                        Fluid$i{s+6,n} Fluid$i{s+7,n} Fluid$i{s+8,n} ...
                        Fluid$i{s+9,n}]';
end


Leider funktioniert das in Matlab so irgendwie nicht... Die Frage ist somit im Prinzip, wie ich eine Variable in den Dateinamen packen kann und Matlab die Variable trotzdem noch erkennt...

Ich bin über jeden Hinweis dankbar!

Liebe Grüße

Andromeda


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.05.2017, 18:32     Titel:
  Antworten mit Zitat      
Hallo,

du verwendest dynamische Variablennamen. In verschiedenen Stellen kannst du nachlesen, dass das keine gute Idee ist. Stattdessen könntest du Cell Arrays verwenden. Statt $i müsstest du dann {i} schreiben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Andromeda

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2017, 08:57     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich weiß, dass das nicht die geschickteste Lösung ist, aber anders konnte ich es bisher nicht lösen...

Ich möchte ja auf verschiedene Cell Arrays zugreifen, aber mit der vorgeschlagenen Syntax funktioniert das nicht mehr.

Code:

nu_ue_tfilm_DS_Fluid{i}=[Fluid{i}{s,n} Fluid{i}{s+1,n} Fluid{i}{s+2,n} ...
                        Fluid{i}{s+3,n} Fluid{i}{s+4,n} Fluid{i}{s+5,n} ...
                        Fluid{i}{s+6,n} Fluid{i}{s+7,n} Fluid{i}{s+8,n} ...
                        Fluid{i}{s+9,n}]';
end


Wie müsste ich das den dann umprogrammieren, um Deine Idee umsetzen zu können?

Grüße Andromeda
 
Andromeda

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2017, 09:28     Titel:
  Antworten mit Zitat      
Ich habe es auch schon über die Assignin Funktion probiert, aber scheitere noch daran dann auf einen Eintrag des Cell Arrays Fluid00 zuzugreifen...

Code:

 for k=0:2:10
     assignin ('base',['TESTTESTTEST_nu_ue_tfilm_DS_Fluid' num2str(k,'%02i')],[['Fluid' num2str(k,'%02i')]{s,n}]');
end



Vielen Danke für Eure Hilfe und Entschuldigung für die vielen Post und die Verwirrung.

Grüße

Andromeda
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.05.2017, 15:49     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
aber mit der vorgeschlagenen Syntax funktioniert das nicht mehr.

was funktioniert daran nicht?
Ein reproduzierbares Beispiel wäre hilfreich.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Andromeda

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2017, 08:47     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich erhalte immer die Fehlermeldung "Undefined variable "Fluid" or class "Fluid""...

anbei hab ich ein exemplarisches Cell Array angehängt. Die komplizierte Struktur ist leider für spätere Auswertungen nötig...
Code:


for i=0:2:10

i= num2str(i,'%02i');    
   
nu_ue_tfilm_DS_Fluid{i}=[Fluid{i}{44,13} Fluid{i}{45,13} Fluid{i}{46,13} ...
                        Fluid{i}{47,13} Fluid{i}{48,13} Fluid{i}{49,13} ...
                        Fluid{i}{50,13} Fluid{i}{51,13} Fluid{i}{52,13} ...
                        Fluid{i}{53,13}]';
                   
end


Vielen Dank schon mal für Deine/Eure Hilfe!

Grüße Andromeda

Fluid00.mat
 Beschreibung:

Download
 Dateiname:  Fluid00.mat
 Dateigröße:  22.64 KB
 Heruntergeladen:  416 mal
 
Andromeda

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2017, 12:38     Titel:
  Antworten mit Zitat      
Hallo zusammen,

ich hab jetzt eine, wenn auch nicht so schöne Lösung gefunden Smile

Code:


for i=0:2:40                                                                   % funktioniert                                      

eval(sprintf('Segment_A = Fluid%02d{s,n};',i));
eval(sprintf('Segment_B = Fluid%02d{s+1,n};',i));
eval(sprintf('Segment_C = Fluid%02d{s+2,n};',i));
eval(sprintf('Segment_D = Fluid%02d{s+3,n};',i));
eval(sprintf('Segment_E = Fluid%02d{s+4,n};',i));
eval(sprintf('Segment_F = Fluid%02d{s+5,n};',i));
eval(sprintf('Segment_G = Fluid%02d{s+6,n};',i));
eval(sprintf('Segment_H = Fluid%02d{s+7,n};',i));
eval(sprintf('Segment_I = Fluid%02d{s+8,n};',i));
eval(sprintf('Segment_J = Fluid%02d{s+9,n};',i));

assignin ('base',['NEU_nu_ue_tfilm_DS_Fluid' num2str(i,'%02i')],[Segment_A ...
           Segment_B Segment_C Segment_D Segment_E Segment_F Segment_G ...
           Segment_H Segment_I Segment_J]');

end
 


Danke für Eure Hilfe und wenn jemand noch eine Idee für eine schönere Version ohne eval() hat, bin ich sehr offen dafür!

Grüße und schönes Wochenende

Andromeda
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.05.2017, 17:29     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
ich erhalte immer die Fehlermeldung "Undefined variable "Fluid" or class "Fluid""...

Du musst die Daten vorab so organisieren, dass sie als Cell Array vorliegen. Wenn du das nicht einmalig machst, wirst du immer auf so unschöne Konstrukte wie in deinem letzten Post zurückgreifen müssen.

Grüße,
Harald
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.