Matlab:迭代2d单元数组并将每行映射到变量

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

我是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-'
我遗漏了什么?

迭代(列)单元格,而不是单元格内容。因此,在每次迭代中,
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