2016-10-25 25 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