matlab 如何把两个矩阵中相同值的元素设为0

2025-06-28 16:30:20
推荐回答(5个)
回答1:

有没有现成的函数不知道,但是实现起来应该不难。我采用跟C类似的方法经过两次循环实现的。代码如下:
[ra,ca] = size(a);
[rb,cb] = size(b);
for i = 1:ra*ca
for j = 1:rb*cb
if a(i) == b(j)
a(i) = 0;
end
end
end

a,b可以为任意形式的矩阵。

回答2:

这样也可以,依次找到与b每个数相等的a数列编号,再赋值为零。
index=[];
for i = 1:length(b)
index = [index; find(a==b(i))];
end
a(index)=0;

回答3:

%向量化的方式(代码是不是很犀利)
for i=1:length(b(:)) %感谢某兄弟的提示,不是length(b)
a(a==b(i))=0;

end

回答4:

用循环来实现吧,假设a矩阵共有m个元素,b矩阵共有n个元素
for i=1:m
for j=1:n
if a(i)==b(j)
a(i)=0
end
end
end
就行了。

回答5:

可以这样写:
a=[ 1 2 3;4 1 2]
b=[2,3 4]'
for i=1:length(b)
a(find(a==b(i)))=0;
end
a
--------------运行结果:
a =
1 2 3
4 1 2
b =

2

3
4
a =

1 0 0

0 1 0