Matlab:迭代2d单元数组并将每行映射到变量
我是Matlab新手,我希望有一组不同的参数来初始化计算,然后绘制每个计算的结果。我正在尝试以下代码:Matlab:迭代2d单元数组并将每行映射到变量,matlab,loops,iteration,cell-array,Matlab,Loops,Iteration,Cell Array,我是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 e
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-'
我遗漏了什么?迭代(列)单元格,而不是单元格内容。因此,在每次迭代中,params
是一个嵌套(两级)单元数组。例如,在第一次迭代中,params
是{{0',-'}}
因此,您需要{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
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