如何把MATLAB中 两个数组的不同元素挑出来

有两个数组
A=[1,5,7,19,35,51,61,73,85,95,111,127,139,141,145]
B=[7,19,51,61,73,85,95,127,139]
怎么把A中有而B中没有的元素挑出来?

用find函数。


假设第一个数组是x,第二个数组是y。有代码如下:


i=find(x~=y);   %该命令返回所有对应x元素不等于y元素的下标。

x(i),y(i)                      %显示所有不同元素


测试结果:


扩展:

如果x,y是同型号矩阵也可以。这是候传回的参数可以是1个(矩阵线性化以后的下标),或者2个(行下标、列下标),或者3个(前3者都有)。

调用格式:[I,J,V] = find(X)     I行下标,J列下标,V线性化下标

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-12-08
AB两个数组,可以用for循环,将A数组里的每一个值find()函数去B数组里找,找到了就返回1,没找到就说明这个数属于不同元素,就把这个元素保存下来。
第2个回答  推荐于2018-02-27
%没有什么好的函数了,只能老实的写程序了,我给你写了一个
clear;
clc;
A=[1,5,7,19,35,51,61,73,85,95,111,127,139,141,145];
B=[7,19,51,61,73,85,95,127,139];
la=length(A);
lb=length(B);
n=1;
for i=1:la
isequal=0;
for j=1:lb
if A(i)==B(j)
isequal=1;
break;
end
end
if isequal==0
C(n)=A(i);
n=n+1;
end
end
C本回答被提问者和网友采纳
第3个回答  2018-02-04
使用setdiff函数
例子: >>x=[1:10]; y=[6:8]; c = setdiff(x,y)
输出结果:
c =
1 2 3 4 5 9 10
(@wisdomay正解)
相似回答