删除任何两个数组值,它们的差异是该数组的成员

时间:2015-09-13 05:04:33

标签: arrays matlab

我试图在MATLAB中删除其差异是该数组成员的数组值。例如,如果我有一个定义为

的数组
x = [1 2 4 3 7];

我想删除2,因为它可以从4 - 2实现。我也想删除4因为它可以从7 - 3实现。我想要存储这些值(2和4,分别)成矩阵。后者很容易。我只是很难用这个检查器进行求和。

我知道你可以使用

ismember(*any 2 differences*),x(:))

检查差异是否在数组中。但是,我不知道如何编写我的函数来尝试元素减法的所有组合。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

n = length(a);
differences = meshgrid(a,a) - meshgrid(a,a)'; % get differences between elements
differences(1:n+1:n*n) = []; % remove diagonal
a(ismember(a,differences)) = []; % remove elements in differences

我假设你只想要独特元素之间的差异。如果您想允许a元素与其自身之间的差异,请删除第3行。