我是Matlab的新手,我希望有一组不同的参数来初始化计算,然后为每个参数绘制结果。我正在尝试以下代码:
params_set = {{0, '-'}, {20, '--'}, {50, '-o-'}};
for params = params_set
[param, stroke] = deal(params{:})
% do something - i.e. solve equation and plot result with given stroke settings
end
我希望变量“param”分别为0,然后是20,然后是50,变量“stroke”分别为' - ',' - ',最后是'-o - '。
但我得到以下内容:
param =
[0] '-'
stroke =
[0] '-'
param =
[20] '--'
stroke =
[20] '--'
param =
[50] '-o-'
stroke =
[50] '-o-'
我在那里错过了什么?
答案 0 :(得分:3)
for
loop遍历(列的)单元格,而不是单元格的内容。因此,在每次迭代中,params
是一个嵌套的(两级)单元格数组。例如,在第一次迭代中,params
为{{0, '-'}}
。
因此,您需要{1}
将外部单元格“拆箱”到内部单元格中,然后{:}
将内部单元格拆分为其内容(数字和字符串):
[param, stroke] = deal(params{1}{:})
另请注意,在最近的Matlab版本中,您可以删除deal
:
[param, stroke] = params{1}{:}
尽管把它留在那里可能是个好主意。
所以代码是:
params_set = {{0, '-'}, {20, '--'}, {50, '-o-'}};
for params = params_set
[param, stroke] = deal(params{1}{:})
% do something - i.e. solve equation and plot result with given stroke settings
end