Mehrere Variablen (Arrays) auf einmal gleich manipulieren
ra
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 30.08.2013, 09:42
Titel: Mehrere Variablen (Arrays) auf einmal gleich manipulieren
Hi,
ich habe verschiedene Variablen, bei denen ich gerne die gleichen Operationen durchführen möchte.
Bsp:
Code:
% Variablen werden initialisiert
bla1=11x3 double, bla2=5x3 double, bla3=..
% Manipulation Nr1. Alle NaN Zeilen werden gelöscht.
bla1(isnan(bla1(:,2)),:)=[];
bla2(isnan(bla2(:,2)),:)=[];
bla3(isnan(bla3(:,2)),:)=[];
bla4(isnan(bla4(:,2)),:)=[];
..
die Ursache des Problems ist die Durchnumerierung der Variablen.
Vorschlag: lege die verschiedenen Variablen in einem Cell Array (falls sie wie hier angedeutet durchnumeriert sind) oder in einer Struktur (falls sie echte Namen haben sollen) ab.
Dann kannst du in einer for-Schleife bequem über die Elemente des Cell Arrays bzw. der Struktur iterieren.
Code:
% Variablen werden initialisiert
bla{1}=11x3 double, bla{2}=5x3 double, bla{3}=..
% Manipulation Nr1. Alle NaN Zeilen werden gelöscht. for I=1:numel(bla)
bla{I}(isnan(bla1(:,2)),:)=[];
end
P.S.: du schreibst zwar "auf einmal", meinst aber vermutlich "nacheinander"?
Ra
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 30.08.2013, 12:28
Titel:
Hallo!
Vielen dank für die schnelle und gute Antwort. Mit dieser Methode funktioniert das wunderbar.
Was mich aber leicht stört, ist dass ich dann all meine Variablen mit Namen: bla, test, keks,.. in einen struct packen muss. Und keine Eindeutigen Namen mehr habe.
Gibt es denn keine Möglichkeit die Variablennamen in einen string Array zu packen und diese Namen wieder als Variable anzusteuern?
das ist sehr umständlich und mag auf den ersten blick sinnvoll erscheinen... ist es aber meist nicht. wichtige daten im namen unterzubringen oder den index ist nie gut. es muss mit aufwand reingebracht werden und mit noch mehr aufwand wieder ausgelesen werden. ein index sollte immer als index verwendet werden und nicht im namen. bla ist ein eindeutiger name bla1 bla2 hingegen enthalten bereits informationen die besser in bla stehen sollten und nicht im namen.
_________________
die Möglichkeit gäbe es schon und zwar mit eval, wobei man sich vorher überlegen sollte, ob es nicht sinnvoller ist, seine Datenstruktur entsprechend zu ändern. Variablen im Namen durchzunummerieren à la "bla1, bla2... bla42" führt früher oder später immer zu solchen Problemen, dass man sich schwer tut darauf zuzugreifen. Hier sind z.B. Cell-Arrays wie Harald sagte eigentlich besser geeignet.
Über die Feldnamen bleibt die Zuordnung eindeutig.
Grüße,
Harald
Ra
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 30.08.2013, 12:56
Titel:
Danke für eure Antworten. Wir Ihr sagt wird das sehr unschön mit dem auslesen.
Werde bla, keks, blub nun doch in einen struct schreiben.
@Harald: mit "auf einmal" war nacheinander gemeint. Wobei man natürlich die Schleife, welche man dann benötigt mit parfor auswerten lassen kann.
Einstellungen und Berechtigungen
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.