2016-07-12 17 views
0

Ich habe eine Reihe von Matrizen bekommtMatlab: Pass Mehrere Matrices zwischen Funktionen

zeroingMatrix{i} % i going from 1 to 'matrixQuantity' 

Ich brauche diese an einem anderen Callback-Funktion übergeben. So ist die Idee war:

for i = 1:matrixQuantity 
    setappdata(0, 'zeroingMatrix{'i '}', zeroingMatrix{i}); 
end 

und es wieder mit:

for i = 1:matrixQuantity 
    zeroingMatrix{i} = getappdata(0, 'zeroingMatrix{' i '}'); 
end 

aber apperantly diese 'zeroingMatrix{'i '}' ist nicht die richtige Syntax und ich kann nicht den richtigen herauszufinden. Ich habe alle Arten von Bracket-Kombinationen ausprobiert, aber ich werde es nicht zulassen.

Wenn ich versuche, es zu starten, gibt Matlab mir den Standardfehler:

Error: File: RackReader.m Line: 184 Column: 36 Unexpected MATLAB expression.

Linie 184 die setappdata Linie zu sein.

Dies sind nicht die einzigen Daten, die ich zwischen Funktionen übergebe, sondern die erste mit einer Variablen darin. Alles funktioniert gut außer diesem.

Wer ist jemals auf dieses Problem gestoßen oder hat eine bessere Idee?

Vielen Dank im Voraus

Mike

+0

versuchen. So sieht es ''nullingMatrix {' num2str (i) '}'' –

+0

thx ... Sie brauchen immer noch [] und Sie können nicht {} verwenden, ich denke ... aber der Rest funktioniert ... danke –

Antwort

1

Ihr Parameternamen für setappdata muss nur eine gültige Zeichenfolge sein und Sie sind nicht in der Lage diese Zeichenfolge mit der Syntax 'string'1'other' zu konstruieren. Sie müssten sprintf oder num2str verwenden, um die Zeichenfolge zu erstellen.

field = sprintf('zeroingMatrix{%d}', i); 

% OR 
field = ['zeroingMatrix{', num2str(i), '}']; 

Auch ein besserer Ansatz wäre nur das Array gesamten Zelle zu speichern, da drin und indiziert, nachdem Sie es abrufen. zurück

for i = 1:matrixQuantity 
    setappdata(0, ['zeroingMatrix' num2str(i)], zeroingMatrix{i}); 
end 

und es zu:

% Set the value 
zeroingMatrix{i} = newval; 
setappdata(0, 'zeroingMatrix', zeroingMatrix) 

% Then later get the value 
zeroingMatrix = getappdata(0, 'zeroingMatrix'); 
zeroingMatrix{i} 
0

So schob BlackAdder mich in die richtige Richtung mit `num2str (i)` im zweiten Parameter

for i = 1:matrixQuantity 
    zeroingMatrix{i} = getappdata(0, ['zeroingMatrix' num2str(i)]); 
end 
+0

ich würde empfehlen, die Daten an einem einzigen Ort zu speichern, anstatt das Feld, unter dem Sie sie speichern, ständig zu ändern. Siehe meinen Ansatz unten. – Suever