2015-04-12 106 views
0

鉴于创建这个矩阵在MATLAB

A=[a_1 a_2 a_3 ... a_n] 

如何使这个?

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

我想在这里不使用for循环,因为我想加快它。 谢谢。

+0

看来你只是在这里处理重塑,所以为什么不做'重塑(A,100,[])。'? – Divakar

+0

@Divakar事实上它并没有被重塑。第一行和第二行之间有重叠。 – k99731

+0

啊,是的,没错! – Divakar

回答

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,这个计算不应该是你程序中的瓶颈。