2012-10-25 71 views
2

我有以下代码,其中d是尺寸94x290矩阵:切片矩阵matlab的无环路

samples=268; 
dim_cov=23; 
for q=1:samples 
    D(:,q)=(sum(d(:,q+(1:dim_cov)-1),2)); 
end 

有没有办法做到这一点没有一个循环?

+1

有点偏离主题,但是'q + dim_cov'超出'd'(268 + 31 = 299)中的行数。 –

+0

嗨,对不起!我的错误dim_cov它是23 – Donaldo84

回答

0

这是行不通的吗?

dim_cov = 23; 
cs = [zeros(size(d,1), 1) cumsum(d, 2)]; 
result = cs(:,1+dim_cov:end) - cs(:,1:end-dim_cov); 
+0

你好我有不同的结果,如果我尝试你的代码,从数组结果的大小开始,它的大小必须是94x268 – Donaldo84

+0

..我写了dim_cov = 31,但是dim_cov = 23 ; – Donaldo84