0

私は一連の行列を持っています

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

これらを別の Callback 関数に渡す必要があります。したがって、アイデアは次のとおりです。

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

そしてそれを取り戻す:

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

しかし、どうやらこれ'zeroingMatrix{'i '}'は正しい構文ではなく、正しい構文がわかりません。あらゆる種類のブラケットの組み合わせを試しましたが、うまくいきません。

起動しようとすると、Matlab から標準エラーが表示されます。

エラー: ファイル: RackReader.m 行: 184 列: 36 予期しない MATLAB 式です。

184 行目は setappdata 行です。

関数間で渡すデータはこれだけではありませんが、変数を含む最初のデータです。これ以外はすべて正常に動作します。

他の誰かがこの問題に遭遇したことがありますか、またはより良い考えを持っていますか?

どうもありがとうございました

マイク

4

2 に答える 2

1

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

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

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

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

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

% Then later get the value
zeroingMatrix = getappdata(0, 'zeroingMatrix');
zeroingMatrix{i}
于 2016-07-12T15:03:00.407 に答える