我有一个数组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
但它没有用。
你可以帮帮我吗?答案 0 :(得分:1)
试试这个。我认为这就是你想要做的事情。
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]
答案 1 :(得分:1)
你可以这样做:
B(B==0) = missing_values;
或者简单地将它们分成一行:
B(B==0) = setdiff(A, B);
编辑:好奇,也许这个例子过于简化了,您似乎最终希望B
等于A
。如果是这样,你可以这样做:
B = A;