2017-07-06 12 views
1

我在Matlab中有mxn數組r,元素爲零或1。在Matlab中使用xor向量化代碼

我想要構造尺寸的向量pmxn使得對於i=1,...,m

p(i,1)=r(i,1)

p(i,2)=r(i,2)XOR r(i,1)

p(i,3)=r(i,3) XOR r(i,2)

...

p(i,n)=r(i,n) XOR r(i,n-1)

此代碼做我想要的,但是它對於m,n很大。你能提出更快的建議嗎?

m=4; 
n=5; 
r=[1 1 1 1 1; ... 
    0 0 1 0 0; ... 
    1 0 1 0 1; ... 
    0 1 0 0 0]; 

p=zeros(m,n); 

for i=1:m 
    p(i,1)=r(i,1); 
    for j=2:n 
     p(i,j)=xor(r(i,j),r(i,j-1)); 
    end 
end 

回答

2

肯定的:

p   = zeros(m,n); 
p(:,1)  = r(:,1); 
p(:,2:end) = xor( r(:,1:(end-1)), r(:,2:n) ); 

我們在這裏所做的是:

  1. 預分配的數組。和你的代碼一樣。
  2. 填寫的p第一列與r
  3. 填充在第二第一列 - 與所需XOR操作p最後一列。作爲XOR的輸入,我們使用r的兩個大部分。第一個是第1 - (最後1)列。第二個是第二到最後一列。