Matlab:在函数之间传递多个矩阵

时间:2016-07-12 14:56:24

标签: matlab matrix syntax pass-data

我有一系列矩阵

python manage.py shell --settings=project.shell_settings

我需要将这些传递给另一个Callback函数。所以这个想法是:

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 不是正确的语法,我无法弄清楚正确的语法。我试过各种各样的支架组合,但它不会让我这样做。

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

  

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

第184行是setappdata行。

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

其他人遇到过这个问题或有更好的想法吗?

非常感谢

麦克

2 个答案:

答案 0 :(得分: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}

答案 1 :(得分: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