在MATLAB中将数组转换为矩阵

时间:2014-05-12 12:27:30

标签: arrays matlab matrix

我需要通过以下方式将一个大数组转换为矩阵:获取数组的前m个条目并将其作为矩阵的第一行。

例如:如果我有一个长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开始。

1 个答案:

答案 0 :(得分:2)

最好的方法是使用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