2012-08-04 47 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