在Matlab中使用xor矢量化代码

时间:2017-07-06 15:24:30

标签: matlab

我在Matlab中有一个mxn数组r,其元素为零或一。

我想构建一个维度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

1 个答案:

答案 0 :(得分:2)

不确定

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

我们在这里做的是:

  1. 预分配数组。与您的代码相同。
  2. 使用p
  3. 的第一列填写r的第一列
  4. 使用所需的p操作填写XOR的倒数第二列。作为XOR的输入,我们使用了r的两个大部分。第一个是第1列(最后1列)。第二个是第二列到第二列。