我需要通过以下方式将一个大数组转换为矩阵:获取数组的前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
开始。
答案 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