我有一系列矩阵
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行。
这不是我在函数之间传递的唯一数据,而是第一个带有变量的数据。一切都运行得很好。
其他人遇到过这个问题或有更好的想法吗?
非常感谢
麦克
答案 0 :(得分: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}
答案 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