2015-03-20 2 views
0

Учитывая, что myCellArray{10,3} = [];, я хотел бы заполнить первый столбец последовательными номерами (скажем, от 1 до 10). Я знаю, что я мог бы сделать это следующим образом:Заполнение массива ячеек последовательными номерами в Matlab

[myCellArray{1:10,1}] = deal(1,2,3,4,5,6,7,8,9,10) 
myCellArray = 
    [ 1] [] [] 
    [ 2] [] [] 
    [ 3] [] [] 
    [ 4] [] [] 
    [ 5] [] [] 
    [ 6] [] [] 
    [ 7] [] [] 
    [ 8] [] [] 
    [ 9] [] [] 
    [10] [] [] 

Однако, если мой массив ячеек гораздо больше (скажем, 1000 строк, а не 10), выписывая разделенных запятыми значений, очевидно, становится утомительным:

[myCellArray{1:10,1}] = deal(1,2,3, ... ,1000)

Есть ли способ создать этот «список» цифр автоматически? Что-то вроде (1:10)? Я знаю, что могу назначать значения через циклы, но есть ли элегантное однострочное решение или что-то близкое к этому?

ответ

3

Это может быть один из способов сделать это с num2cell -

myCellArray(:,1) = num2cell(1:size(myCellArray,1)) 

вместо num2cell, вы можете использовать mat2cell, который не может выглядеть очень элегантно, хотя -

mat2cell([1:size(myCellArray,1)]',ones(1,size(myCellArray,1)),1) 
Смежные вопросы