我试图在MATLAB中删除其差异是该数组成员的数组值。例如,如果我有一个定义为
的数组x = [1 2 4 3 7];
我想删除2,因为它可以从4 - 2实现。我也想删除4因为它可以从7 - 3实现。我想要存储这些值(2和4,分别)成矩阵。后者很容易。我只是很难用这个检查器进行求和。
我知道你可以使用
ismember(*any 2 differences*),x(:))
检查差异是否在数组中。但是,我不知道如何编写我的函数来尝试元素减法的所有组合。
答案 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行。