2017-07-06 10 views
1

Matlabにmxn配列rの要素があり、要素は0または1です。Matlabでxorを使用してコードをベクトル化する

私は次元のベクトルpを構築したいmxnようにそのための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. 2に入力r
  3. の最初の列とpの最初の列に記入 - 所望XOR操作にpの最後の列が。 XORへの入力として、rの2つの大きなセクションを使用しています。最初の列は1番目(最後の1番目)の列です。 2番目の列は2番目から最後の列です。
関連する問題