在matlab中创建这个矩阵

时间:2015-04-12 09:42:57

标签: matlab vectorization

给出

A=[a_1 a_2 a_3 ... a_n]

如何制作?

[a1 ... a100]
[a2 ... a101]
...
[an-100+1 ... an]

我想不要在这里使用for-loop,因为我想加快速度。 谢谢。

1 个答案:

答案 0 :(得分:4)

您可以使用:

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倍,而且这个计算在你的程序中几乎不会成为瓶颈。