2012-08-04 45 views
1

我需要用下面的代码帮助:MATLAB:索引和输出分配

N = size(data1,1)/2; 
c=NaN((size(data1,1)/2),size(data1,2)); 
kk=0; 
for ii=1:2:((size(data1,1)/2)-1) 
c(kk+(1:N-ii),:)=bsxfun(@minus,data1(ii,1:end),data1(ii+1,1:end)) 
kk=kk+N-ii; 
end 

代码试图采取所有列值之差两行之间,那么获得下两个不同行之间的差异等等。 例子:

matrix a 
1 2 3 4 
4 5 6 7 
8 9 10 11 
12 13 14 15 
16 17 18 19 
20 21 22 23 


matrix b 
3 3 3 3 
4 4 4 4 
4 4 4 4 

回答

1

如何:

a(2:2:end,:) - a(1:2:end-1,:) 

编辑:你的基础版本:

data1 = [1 2 3 4; 4 5 6 7; 8 9 10 11; 12 13 14 15; 16 17 18 19; 20 21 22 23]; 
[row,col] = size(data1); 
row = row/2; 
c = nan(row,col); 
for ii = 1:row 
    c(ii,:) = bsxfun(@minus,data1(2*ii,:),data1(2*ii-1,:)); 
end 
+0

清楚,很容易 – Buntalan 2012-08-04 14:33:27

+0

怎么样,如果我是使用“for循环“ 方法。你能解决我的代码,所以我可以看到如何正确索引的东西?谢谢你的编辑 – Buntalan 2012-08-04 14:35:28

+0

谢谢你的编辑 – Buntalan 2012-08-04 15:02:40