比较matlab中两个相同长度的不同向量

时间:2011-11-24 10:15:15

标签: matlab vector comparison

我有两个矩阵A和B. A是一个长度为1000X1的数组,由0和1组成,B也是相同的大小。现在B是一个函数的输出,它以A作为输入执行扫描操作。扫描只不过是在A中的1处添加零。因此B的值与A类似,除了1中的一些被0替换。现在我的任务是填充B中的那些0值,这些值在扫描操作后被随机二进制值替换。我已经在这个真棒网站的用户帮助下完成了这个。这里的代码就在这里

idx=strfind(B,[0 0 0 0]);
n=dec2bin(randi([0 15],[numel(idx) 1]),4) - '0';
idx=bsxfun(@plus, idx', (0:3));
xx = B;
xx(idx(:)) = n(:);

现在这个函数也将替换已经存在于A中的零。我想只替换那些从1变为0的零而不是那些在A中已经为0的0。任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

我愿意:

function modifiedB=modifyB(A,B)
  idx=(A~=B); %% or idx=((A==1)&(B==0)); %% find the indices where B changed
  B(idx)=(rand(nnz(idx),1)>0.5); %% replace at those indices by random numbers
  modifiedB=B;
end