|
|
M-File: Funktion auf jede Variable im Workspace anwenden |
|
isochor |

Forum-Anfänger
|
 |
Beiträge: 26
|
 |
|
 |
Anmeldedatum: 01.10.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.10.2014, 11:02
Titel: M-File: Funktion auf jede Variable im Workspace anwenden
|
 |
|
 |
|
Hallo Leute,
ich habe im Workspace hunderte Variablen. Jede Variable besteht aus tausenden von gemessenen Spannungen und den dazugehörigen Zeiten.
z.B.
A_1
A_2
.
.
.
Aletzte
A_1=[1,2; 9,8]
Jede Variable hat zwar immer 2 Spalten, jedoch wurden nicht immer gleich viele Messungen durchgeführt, so dass man bspw. in A1 1000 Zeilen hat, in A_2 1500 usw.
Ich will in einer M-File eine Funktion schreiben, die ich auf alle Variablen im Workspace anwenden will.
Die Funktion wäre z.B.
x=A_i(:,2)/1000-0,1
Also Teile mir die zweite Spalte durch 1000 und subtrahiere 0,1.
Ich will diese Funktion auf alle Variablen anwenden. Mein Ansatz war der, dass ich eine For-Schleife durchlaufen lasse
for i=1:1000
x=A_i(:,2)/1000-0,1
end
Das funktioniert aber aus verschiedenen Gründen nicht. Erstmal würde nach jeder Schleife das x ersetzt werden, er soll mir allerdings eine neue Variable mit dem Resultat im Workspace erstellen. Auch kann er auf "A_i" mit i=1,2,3 etc. im Workspace nicht zugreifen.
Mein zweiter Ansatz ist diese Funktion:
for i=1:1000
x = (sprintf('A_%d', i))
end
Hier macht er dann
x=A_1;
x=A_2;
etc. gibt mir aber nicht den Inhalt von A_1 wieder. Somit kann ich das nicht auf die Funktion anwenden.
Könnt ihr mir dabei helfen? Hoffe ich habe mein Problem verständlich formuliert.
Vielen Dank
Gruß
|
|
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.10.2014, 11:11
Titel:
|
 |
Dein eigentliches Problem ist, dass Du Deine Werte doof abgelegt hast. Man packt Indizes nicht in den Variablennamen - in keiner Programmiersprache... Besser wäre die Verwendung von cells:
Gibt auch noch ungefähr hundert weitere Beispiele hier im Forum und nochmal ungefähr 5000 Beiträge, die auf diese Beispiele hinweisen ;-)
|
|
|
isochor |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 26
|
 |
|
 |
Anmeldedatum: 01.10.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.10.2014, 13:19
Titel:
|
 |
Vielen Dank für die Antwort aber ich komme nicht ganz damit zurecht. Hab jetzt auch versucht die Ansätze aus den Beiträgen aus der Suchfunktion zu nutzen aber ich drehe mich irgendwie im Kreis.
Wenn ich im einfachsten Fall das hier versuche:
Kommt als Fehlermeldung immer folgendes:
A =
[1x3 double]
??? Undefined function or method 'mtimes' for input arguments of type 'cell'.
Error in ==> neuer_Ansatz at 48
u_(idx) = (A(idx))*3;
"A = [1x3 double]" ist auch so ein Problem. Gebe ich A{1}=[1,2;3,4] ein, kommt als Ausgabe A=[1x2 double]. Was kann ich damit anfangen?
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.10.2014, 13:26
Titel:
|
 |
Sorry, hatte einen Fehler im Code, cells werden mit geschweiften Klammern indiziert:
Wenn die spannende Funktion keinen Skalar zurück gibt, könnte Deine Ausgabe-Variable zum Beispiel so erzeugt werden:
|
|
|
isochor |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 26
|
 |
|
 |
Anmeldedatum: 01.10.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.10.2014, 13:36
Titel:
|
 |
mhhh,
wenn ich das jetzt so mache:
kommt folgende Meldung:
Zitat: |
Ausgabe =
[2x2 double] [2x2 double] [2x2 double]
Ausgabe =
[2x2 double] [2x2 double] [2x2 double]
Ausgabe =
[2x2 double] [2x2 double] [2x2 double]
|
Muss ich jetzt noch einen Befehl einfügen, damit ich jetzt eine Matrix bekomme mit den Werten der alten Matrix x 3?
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.10.2014, 13:49
Titel:
|
 |
Welche alte Matrix? Du hattest 3 alte Matrizen und die Ergebnisse der Multiplikation stecken jetzt alle in der Variablen Ausgabe drin. Die einzelnen Matrizen kannst Du dann z.B. mit
angucken.
|
|
|
isochor |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 26
|
 |
|
 |
Anmeldedatum: 01.10.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.10.2014, 14:24
Titel:
|
 |
Suuuuper es klappt
Ich wollte ja jedes Ergebnis in einer eigenen Variablen abspeichern. Habe noch in der For-Schleife
eingefügt.
Vielen Dank ich saß so viele Stunden daran. Jeder Zeilencode ist zu Beginn so eine große Herausforderung
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.10.2014, 14:55
Titel:
|
 |
Das mit eval funktioniert zwar, ist aber echt nicht gut. Sollte man gar nicht erst damit anfangen - habe noch keinen Fall gesehen, wo es nicht vermeidbar gewesen wäre...
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|