在 matlab 中创建这个矩阵
creating this matrix in matlab
给定
A=[a_1 a_2 a_3 ... a_n]
怎么做这个?
[a1 ... a100]
[a2 ... a101]
...
[an-100+1 ... an]
我不想在这里使用 for-loop,因为我想加快它的速度。
谢谢。
您可以使用:
n = numel(A);
m = 100;
I = bsxfun(@plus, 1:m, (0:n-m).');
B = A(I);
旁注:for
循环不执行 那个 坏:
B = zeros(n-m+1, m);
for i = 1:size(B)
B(i,:) = A(i:i+m-1);
end
就我的测试而言,它只慢了 4 倍,而且这个计算应该不会成为您程序中的瓶颈。
给定
A=[a_1 a_2 a_3 ... a_n]
怎么做这个?
[a1 ... a100]
[a2 ... a101]
...
[an-100+1 ... an]
我不想在这里使用 for-loop,因为我想加快它的速度。 谢谢。
您可以使用:
n = numel(A);
m = 100;
I = bsxfun(@plus, 1:m, (0:n-m).');
B = A(I);
旁注:for
循环不执行 那个 坏:
B = zeros(n-m+1, m);
for i = 1:size(B)
B(i,:) = A(i:i+m-1);
end
就我的测试而言,它只慢了 4 倍,而且这个计算应该不会成为您程序中的瓶颈。