0

我有一系列矩阵

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

但显然这'zeroingMatrix{'i '}'不是正确的语法,我无法找出正确的语法。我尝试了各种括号组合,但它不会让我这样做。

当我尝试启动它时,Matlab 给了我标准错误:

错误:文件:RackReader.m 行:184 列:36 意外的 MATLAB 表达式。

第 184 行是 setappdata 行。

这不是我在函数之间传递的唯一数据,而是第一个带有变量的数据。除了这个,一切都很好。

还有其他人遇到过这个问题或有更好的主意吗?

非常感谢提前

麦克风

4

2 回答 2

1

您的参数名称setappdata必须只是一个有效的字符串,并且您不能使用语法构造该字符串'string'1'other'。您将需要使用sprintfnum2str构造字符串。

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 回答
0

所以 BlackAdder 把我推向了正确的方向:

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

并将其取回:

for i = 1:matrixQuantity
    zeroingMatrix{i} = getappdata(0, ['zeroingMatrix' num2str(i)]);
end
于 2016-07-12T15:10:49.793 回答