Arrays 替换数组中缺少的值

Arrays 替换数组中缺少的值,arrays,matlab,Arrays,Matlab,我有一个数组A=[3 4 1 2 5 6]和另一个数组B=[3 4 0 2 0 0] 我尝试使用Matlab的setdiff函数找出B的缺失元素 missing_values=setdiff(A,B); 我得到的答案是 missing_values= 1 5 6 现在我想用缺少的值替换数组B的零。。。。 你能帮我吗 我尝试了下面给出的代码: j=1; missingvalues=setdiff(A,B) idx= nwP4(2,: )== 0; if(A(idx)==0) A(idx

我有一个数组
A=[3 4 1 2 5 6]
和另一个数组
B=[3 4 0 2 0 0]

我尝试使用Matlab的
setdiff
函数找出B的缺失元素

missing_values=setdiff(A,B);
我得到的答案是

missing_values= 1 5 6
现在我想用缺少的值替换数组B的零。。。。 你能帮我吗

我尝试了下面给出的代码:

j=1;
missingvalues=setdiff(A,B)
idx= nwP4(2,: )== 0;
if(A(idx)==0)    
A(idx) = missingvalues(j);
j=j+1;    `enter code here`
end 
但它不起作用


你能帮我吗?

试试这个。我想这就是你想要做的

A=[3 4 1 2 5 6]
B=[3 4 0 2 0 0]

missing_values=setdiff(A,B);
B(find(~B))=missing_values
或者在一行中完成

B(find(~B))=setdiff(A,B);
这将给B留下

B = [3   4   1   2   5   6]
您可以这样做:

B(B==0) = missing_values;
或者简单地把它们放在一行:

B(B==0) = setdiff(A, B);

编辑:只是好奇,也许这个例子过于简化了,似乎你最终希望
B
等于
A
。如果是这样,您可以简单地执行以下操作:

B = A; 

我用代码得到了答案:j=1;missingvalues=setdiff(A,B)idx=nwP4(2,:)=0;如果(A(idx)=0)A(idx)=缺失值(j);j=j+1;end@chappjc根据描述,它应该符合OP的目标:当然有。我想知道目标到底是什么?也许这个例子过于简化了。[耸耸肩]