2014-05-12 3 views
0

Мне нужно превратить большой массив в матрицу следующим образом: взять первые m записей в массиве и сделать первую строку матрицы.Включение массива в матрицу в MATLAB

Например: если у меня был массив длиной 100 записей, соответствующая матрица будет 10 строк, и каждая строка будет 10 записей массива с сохраненным порядком.

Я попытался следующий код:

rows = 10 
row_length = 10 
a = randi(1,100); 
x = zeros(rows,row_length) 
for i=1:rows 
    x(i) = a(i:i+row_length) 
end 

, но не повезло. Я застрял на том, как сдвинуть окно по row_length, так что я начну с row_length+1 во второй (и последующей) итерации цикла.

+0

@ Dan спасибо! Я новичок в Matlab и понятия не имею, что можно сделать! –

ответ

2

Лучший способ сделать это состоит в использовании функции RESHAPE Matlab в:

reshape(a,row_length,[]).' 

Это изменит сначала назначая вниз столбцы, поэтому я транспонировать в конце (т.е. .')

Однако только ради вашего обучения, так вы могли бы сделать это по-своему:

rows = 10 
row_length = 10 
a = rand(1,100) 
x = zeros(rows,row_length) 
for i=1:row_length:rows*row_length    %// use two colons here, the number between them is the step size 
    x(i:i+row_length-1) = a(i:i+row_length-1) %// You need to assign to 10 elements on the left hand side as well! 
end 
Смежные вопросы