2016-07-12 7 views
0

間に複数の行列を渡して、私は別のコールバック関数にこれらを渡す必要が行列MATLABは:関数

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

のシリーズを持っています。

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

とでそれを取り戻す::だからアイデアでした

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

が、apperantlyこの'zeroingMatrix{'i '}'は正しい構文ではありませんし、私は右のいずれかを把握することはできません。私はブラケットの組み合わせのすべての種類を試みたが、それは私にそれをさせることはできません。 setappdataを行こと

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

ライン184:私はそれを起動しようとすると

、Matlabのは私に標準エラーになります。

私はinbetween関数を渡す唯一のデータではありませんが、最初に変数が入っています。すべてがうまくこの1つを実行exept。

誰もこの問題に遭遇したことはありませんか?事前にそんなに

おかげ

マイク

+0

は、2番目のパラメータで '' num2strは(i)を使用してみてください。それで 'zeroingMatrix {'num2str(i)'} '' –

+0

thxのように見えます。あなたはまだ[]が必要です。{}は使えません...しかし残りは...ありがとう –

答えて

1

setappdataのためのあなたのパラメータ名だけで有効な文字列でなければならないとあなたは構文'string'1'other'を使用して、その文字列を作成することはできません。文字列を作成するには、sprintfまたはnum2strを使用する必要があります。

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

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

また、より良いアプローチは、あなたがそれを取得した後、ちょうどそこに、インデックスそれで全体セル配列を格納することです。

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

をし、それを取り戻すために:

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

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

だからブラックアダーは正しい方向に私をプッシュ

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

私は保存するフィールドを常に変更するのではなく、単一の場所にデータを保存することをお勧めします。下の私のアプローチを参照してください。 – Suever