2015-11-14 2 views
1

Я должен генерировать 20 случайных матриц, увеличивающихся размеровMatlab генерировать несколько случайных матриц

200:50:1150 //sizes of 20 random matrices 

Я хочу, чтобы хранить их в как массив матриц:

как

array(1) // should give me the 1st matrix of size 200x200 
array(2) // should give me the 2nd matrix of size 250x250 and so on 

Я не уверен, как это сделать:

n = 200:50:1150 
for i=1:20 
    M(:,:,i) = rand(n(i)); //This does not work 
end 

Как это сделать, есть ли более быстрый способ без циклов?

+0

Пример кода не работает. Пожалуйста, исправьте это или опишите, какой результат вы ожидаете. – Daniel

+0

Здесь вы идете Я отредактировал вопрос –

ответ

1

Вы не можете складывать свои матрицы разных размеров в 3d-матрицу, матрица имеет фиксированные размеры. Вместо этого используйте ячейку:

n = 200:50:1150; 
M=cell(1,numel(n)); 
for ix=1:numel(n); 
    M{ix} = rand(n(ix)); 
end 

Не использовать цикл for, не увеличивая производительность. Простое генерирование одного и того же количества случайных чисел за один вызов занимает одно и то же время: rand(sum(n.^2),1);

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