我有两个矩阵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。任何帮助都将非常感激。
答案 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