2016-10-25 29 views
1

我是新来的Matlab,我想有一组不同的参数来初始化计算,然后绘制每个结果。分别Matlab:迭代2d单元阵列并将每一行映射到变量

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 

我预计变量“参数”为0,然后20,然后50和可变“中风”是“ - ”,“ - ”,和:我想下面的代码最后'-o-'。

而是我得到如下:

param = 

    [0] '-' 


stroke = 

    [0] '-' 


param = 

    [20] '--' 


stroke = 

    [20] '--' 


param = 

    [50] '-o-' 


stroke = 

    [50] '-o-' 

我缺少什么呢?

回答

3

for loop遍历(的列)单元格,而不是单元格的内容。所以在每次迭代中params是一个嵌套的(两级)单元阵列。例如,在第一次迭代中,params{{0, '-'}}

Therfore你需要{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