替换数组中的缺失值

时间:2014-03-15 04:47:52

标签: 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) = missingvalues(j);
j=j+1;    `enter code here`
end 

但它没有用。

你可以帮帮我吗?

2 个答案:

答案 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;