2016-10-25 3 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, соответственно, и переменный «инсульт», чтобы быть «-», «-», и наконец, «-о».

Но вместо этого я получаю следующее:

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 

 Смежные вопросы

  • Нет связанных вопросов^_^