首页 文章

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

提问于
浏览
0

我有两个矩阵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

    我会做:

    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
    

相关问题