Variablennamen aus Excel ausle < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 21:13 Do 25.10.2007 | Autor: | hein477 |
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Wo mir gestern schon so wunderbar geholfen wurde, habe ich noch eine weitere Frage:
Ich zeige mit der Psychtoolbox Bilder auf dem Bildschirm. Die Darstellung eines Bildes sieht in etwa so aus:
Screen('DrawTexture', WindowPointer, Mein Bild, [], Ort des Bildes auf dem Bildschirm);
Ich zeige nicht nur ein Bild, sondern Viele. Um nicht zu viel Schreibaufwand zu haben, mache ich das mit einer for - end Schleife.
Die Reihenfolge der Bilder entnehme ich einer Excel Tabelle, die ich von einer Kollegin erhalte. Die Tabelle sieht in etwa so aus
'Zahl' 'Bild1' 'OrtBild1' 'Zahl'
'Zahl' 'Bild2' 'OrtBild2' 'Zahl'
'Zahl' 'Bild3' 'OrtBild3' 'Zahl'
'Zahl' 'Bild4' 'OrtBild4' 'Zahl'
Die Spalten in denen hier 'Zahl' steht, enthalten numerische Werte. Die Spalten in denen 'Bild1'... und 'OrtBild1' stehen, enthalten Variablennamen, die vorher im Script definiert worden sind.
Wenn ich meine Excel Tabelle mit dem Befehl:
[num str raw] = xlsread('Mappe1.xls','Tabelle1', 'A2:E5')
einlese, habe ich in der Variablen "raw" die komplette Tabelle.
meine Idee ist jetzt, die Darstellung der Bilder mit einer for-end Schleife zu realisieren. Im ersten Durchgang sollen die Werte aus Zeile 1 genommen werden, im zweiten Durchgang die Werte aus Zeile2, etc. Ausgeschrieben würde mein Befehl zum Zeigen der Bilder etwa so aussehen:
for i=1:n
Screen('DrawTexture', WindowPointer, raw{i,3} [], raw{i,2});
end
Das klappt natürlich nicht, weil raw{i,3} nicht als Variablenname erkannt wird. Wenn ich direkt ins Script einen Cell Array schreibe, der etwa so aussieht: raw = {1 Bild1 OrtBild1 5; 2 Bild2 OrtBild2 7; ...},
funktioniert die for-end Schleife wunderbar.
Hat hier jemand einen Tipp, wie man es anstellen muss, damit Matlab erkennt, dass es sich in der Tabelle um Variablennamen handelt?
|
|
|
|
Hallo,
mir ist die Psychtoolbox zwar unbekannt und ich habe keine Ahnung, wie die Funktion funktioniert, aber ich denke, was du suchst, ist die Funktion eval. Also statt raw{i,3} einfach mal eval(raw{i,3}) ausprobieren.
Du kannst dir auch mal evalin und assignin anschauen.
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:59 Do 25.10.2007 | Autor: | hein477 |
Martin,
Du bist jetzt mein Matlab Gott. Es klappt alles hervorragend!
Danke dafür.
Viele Grüße
Hein
|
|
|
|