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

Vektor aus verschiedenen Matrixeinträgen erzeugen

 

RaumZeit

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2017, 14:49     Titel: Vektor aus verschiedenen Matrixeinträgen erzeugen
  Antworten mit Zitat      
Hallo zusammen,

ich scheitere gerade an einem glaub recht trivialen Problem...

und zwar habe ich verschiedene Cells Fluid00, Fluid02, Fluid04,...Fluid40. In jedem dieser Cells steht in der 30. Zeile und 2. Spalte eine Temperatur, die mich interessiert. Ich möchte dieser untereinander in einen Vektor schreiben. Gibt es eine Möglichkeit dies mit einer Schleife zu erschlagen?

Bisher löse ich es so:

Code:

time_temperature_seg_A=[Fluid00{30,2} Fluid02{30,2} Fluid04{30,2} ...
                        Fluid06{30,2} Fluid08{30,2} Fluid10{30,2} ...
                        Fluid12{30,2} Fluid14{30,2} Fluid16{30,2} ...
                        Fluid18{30,2} Fluid20{30,2} Fluid22{30,2} ...
                        Fluid24{30,2} Fluid26{30,2} Fluid28{30,2} ...
                        Fluid30{30,2} Fluid32{30,2} Fluid34{30,2} ...
                        Fluid36{30,2} Fluid38{30,2} Fluid40{30,2}]';
 


Da ich dies für zig Fälle machen muss, will ich es automatisieren.

Ich dachte an eine Schleife, was aber bisher noch nicht funktioniert...
Code:

for j=0:2:40
   
eval(sprintf('Fluid%02d = time_temperature_seg_A;', j));
                   
end



Besten Dank für jeden Ratschlag!

Eure RaumZeit


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2017, 16:14     Titel:
  Antworten mit Zitat      
Cells können 3-Dimensional sein.


Code:

fluids{1}{1}{1} = Fluid01{1}{1};
fluids{1}{1}{2} = Fluid01{1}{2};
...
fluids{2}{1}{1} = Fluid02{1}{1};
fluids{2}{1}{2} = Fluid02{1}{2};
...
 


Am elegantesten wäre es, wenn es die Variablen Fluid## gar nicht erst gäbe, sondern Du Deine Daten direkt in 3D-Cells ablegen könntest. Aber ich nehme an, die Benennung hast Du Dir nicht selbst ausgedacht, sondern von irgendwo übernommen...

Wenn Du für das Namens-Unglück nix kannst, kannst Du mit eval Deine Daten in die oben dargestellte, deutlich brauchbarere Form bringen und dann damit weiterarbeiten...
Private Nachricht senden Benutzer-Profile anzeigen
 
RaumZeit

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2017, 11:05     Titel:
  Antworten mit Zitat      
Hallo,

ja für die Benennung kann ich leider nix und die steht auch fest...

Ich verstehe allerdings noch nicht ganz verstanden, was mir die drei dimesionale cell array bringen, da ich bisher ja auch schon ein Cell Array habe...

Vielleicht stehe ich aber auch auf dem Schlauch...

Danke und Grüße

Eure RaumZeit
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2017, 11:30     Titel:
  Antworten mit Zitat      
Aus Deiner Zuweisung würde dann folgendes werden:

Code:

%% Umschreiben
fluids{1} = Fluid00;
fluids{2} = Fluid02;
fluids{3} = Fluid04;
...

%% Zuweisung
num_fluids = size(fluids,2);
time_temperature_seg_A = zeros(num_fluids, 1);
for idx = 1:num_fluids;
    time_temperature_seg_A(idx) =fluids{idx}{30,2};
end
 


Je nach dem, wie viele weitere Operationen Du noch auf Deinen Fluids## machen willst, kann sich der Aufwand schon lohnen...

Wenn Du wirklich viele Fluid## hast, kannst Du das Umkopieren mit fluid_vars= ars = whos('Fluid*') und einer Schleife mit einem eval drin auch automatisieren. Wenn Du gar nicht mehr auf die Fluids## zugreifen musst, kannst Du das auch direkt für das Schreiben Deines Arrays machen. Kommt halt drauf an...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.04.2017, 11:50     Titel:
  Antworten mit Zitat      
Hallo,

wie kommen denn diese Fluid## - Variablen zustande? Wenn sie aus einer .mat-Datei geladen werden, kann man sich das Leben einfacher machen, indem man diese in eine Struktur lädt:
Code:


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2017, 12:02     Titel:
  Antworten mit Zitat      
@Epfi: Vielen Dank. Das funktioniert genau so wie ich es mir vorgestellt habe.

@Harald: Die Fluid-Variablen sind einzelne Text-Files, die ich mit Matlab in Cell Arrays lade. Anschließend möchte ich verschiedene Daten aus den verschiedenen Files gegeneinander plotten...
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.04.2017, 12:10     Titel:
  Antworten mit Zitat      
Hallo,

und wie genau erfolgt das Laden?
Da solltest du ja die Benennung unter Kontrolle bringen können.

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

Gast


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

ich habe nun nochmal ein Problem:

Gibt es eine Möglichkeit mithilfe einer Schleife diese drei (nachher werden es 21) Vektoren zu erzeugen und dabei auch immer wieder auf die Fluid zuzugreifen?

Code:

nu_ue_tfilm_DS_Fluid00=[Fluid00{44,13} Fluid00{45,13} Fluid00{46,13} ...
                        Fluid00{47,13} Fluid00{48,13} Fluid00{49,13} ...
                        Fluid00{50,13} Fluid00{51,13} Fluid00{52,13} ...
                        Fluid00{53,13}]';
                     
nu_ue_tfilm_DS_Fluid02=[Fluid02{44,13} Fluid02{45,13} Fluid02{46,13} ...
                        Fluid02{47,13} Fluid02{48,13} Fluid02{49,13} ...
                        Fluid02{50,13} Fluid02{51,13} Fluid02{52,13} ...
                        Fluid02{53,13}]';
                     
nu_ue_tfilm_DS_Fluid04=[Fluid04{44,13} Fluid04{45,13} Fluid04{46,13} ...
                        Fluid04{47,13} Fluid04{48,13} Fluid04{49,13} ...
                        Fluid04{50,13} Fluid04{51,13} Fluid04{52,13} ...
                        Fluid04{53,13}]';  
                     
 


Vielen, vielen Dank für Eure Hilfe.

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