Verfasst am: 23.01.2016, 18:17
Titel: Cell aus WS mit WS Variablen ausführen
Hallo zusammen,
ich habe eine WS Variable vom Typ cell, die als wiederum mehrere Variablen vom Typ double enthält, welche in andere Schleifen erstellt worden sind.
Nun möchte ich die WS Variable, die die anderen Variablen vom Typ double enthält ausführen und zwar so, dass ein Vektor bzw. ein MAtrix mit den Werten der Varibalen vom Typ double das Ergebnis ist.
ein Bsp (mir ist klar, dass man es anderes schreiben kann, aber so ist die WS Struktur aufgebaut):
Code:
alltogether = {'var1'; 'var2'; 'var3'}
var1 = 2;
var2 = 4;
var3 = 7;
% eval und evalin habe ich bereits ausprobiert ohne Erfolg
Verfasst am: 23.01.2016, 23:12
Titel: Re: Cell aus WS mit WS Variablen ausführen
Hallo WS Niete,
Zitat:
ich habe eine WS Variable vom Typ cell, die als wiederum mehrere Variablen vom Typ double enthält, welche in andere Schleifen erstellt worden sind.
Was ist eine "WS Variable"? Meinst Du "Workspace"? Aber alle Variablen existieren nur in einem Workspace, es gibt also keine anderen.
Was die "WS Struktur" ist, verstehe ich deshalb auch nicht.
Zitat:
Nun möchte ich die WS Variable, die die anderen Variablen vom Typ double enthält ausführen und zwar so, dass ein Vektor bzw. ein MAtrix mit den Werten der Varibalen vom Typ double das Ergebnis ist.
Das verstehe ich nicht.
Wenn Du "eval und evalin" schon ausprobiert hast, poste bitte den Code und erkläre, was genau niocht funktioniert hat.
Was möchtest Du als Ergebnis bekommen? Das kann man bisher nicht erraten.
EVAL ist auf jeden Fall immer eine schlechte Idee, denn es gibt immer einfachere und direktere Lösungen. Wahrscheinlich wird die Lösung also lauten, einen anderen Ansatz zu wählen. Beschreibe also noch, welches Problem Du damit lösen möchtest.
Gruß, Jan
WS Niete
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 24.01.2016, 23:29
Titel:
Hallo Jan S,
im WS habe ich ein Vielzahl von Variablen als double enthalten.
Code:
var1 = 2;
var2 = 4;
var3 = 7;
%Bsp für meine Varablen vom Typ double Anzahl der Variablen ist unterschiedliche
Ziel ist in ein xls alle Inhalte der Variablen Var1..Var2 (in dem Fall Zahlen) zu schreiben und zwar unter Verwendung von der Variable alltogether.
Mit who habe ich es auch probiert, das alle Variablen den identische Anfang haben, hier Var.
Das xlswrite sehr viel Zeit in Anspruch nimmt möchte ich einzelne Variablen zu einer Matrix zusammen fassen und per xlswrite ins xls schreiben. Das geht auch aber die es kann auch
und dann fkt das ganze nicht, da jede Variable (Var1..VarX) in eine Zeile der xls geschrieben wird. Es ist als ein Spaltenvektor.
mit dem Code ist es nicht so einfach, der besteht aus zig Zeilen und die Daten liegen nicht vor, daher das Bsp von oben.
In Bezug auf eval bin ich mir bewusst, dass es sehr "suboptimal" ist, aber andere Versuche bringen keinen Erfolg, ein Bsp:
Code:
ifexist('Var1','var')
n = 1;
for l = 1:2 if l == 1
such = {'Teil1'};
else
such = {'Teil2'};
end for i = 1:10
stat = {'stat1' 'stat2' 'stat3' 'stat4' 'stat5'};
du siehst ja, dass es sehr mühsam ist, solchen Code zu schreiben. Wie wäre es stattdessen, alle relevanten Variablen in eine Struktur abzulegen? Dann kannst du problemlos mit
Ich habe also richtig geraten, dass das "WS" in "WS Variablen" den Ausdruck Workspace bedeuten soll. Dann kannst Du das "WS" auch einfach weglassen, denn andere Variablen gibt es nicht.
Zitat:
Eine andere Variable vom Typ cell beinhaltet diese Vielzahl an Variablen des Typs double.
Code:
alltogether = {'var1'; 'var2'; 'var3'}
%Variable vom Typ cell, die die oben genannten Variablen namentlich enthält
Nein. alltogether enthält drei Strings mit den Namen, aber eben keine Variablen. Hier wird schon das Programm und die Daten vermischt, und da liegt bereits der Denkfehler, der die verschwurbelte EVAL-Methode erfodert.
Zitat:
Ziel ist in ein xls alle Inhalte der Variablen Var1..Var2 (in dem Fall Zahlen) zu schreiben und zwar unter Verwendung von der Variable alltogether.
Und das ist genau eine sehr unpraktische Art zu programmieren.
Viel sinnvoller ist es, die Variablen von vornherein in ein Cell zu schreiben und die im Namen verstecken Indices zu vermeiden:
Die EVAL-Befehle aus Deinem Code sind brutal häßlich. Die CHAR-Befehle darin sind überflüssig, wenn Du "stat{j}" mit geschweiften Klammern schreibst. Aber das Ziel sollte es sein, die EVALs ganz weg zu lassen, in dem Du die Daten gleich als Array speicherst und nicht als Variablen mit durchnumerierten Namen.
Dann kann man beim Excel-Export einfach mit "stat{k}" und einer Schleife über k darauf zugreifen. Das Ziel wäre es natürlich, die einzelnen Variablen "stat<X>" von Anfang an in ein Array zu schreiben.
Zitat:
und dann fkt das ganze nicht, da jede Variable (Var1..VarX) in eine Zeile der xls geschrieben wird. Es ist als ein Spaltenvektor.
Kannst Du das noch mal genauer erklären? Was funktioniert nicht?
Gruß, Jan
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.