gpt4 book ai didi

matlab - Matlab中矩阵相等元素的位置对

转载 作者:行者123 更新时间:2023-12-04 07:03:57 27 4
gpt4 key购买 nike

我在 Matlab 中有一个行向量 A ,其中包含可能重复的整数。我希望您帮助构建一个矩阵 B,报告 A 中相等元素的所有可能的位置对。正如下面的评论中所述,困难的部分是我不想在“冗余”对中列出。

让我用一个例子来更好地解释。

clear
A=[100 101 100 100 101 200];

我们可以看到

%A(1)=A(3)=A(4);
%A(2)=A(5);

因此,

 B=[1 3; 1 4; 2 5];

或者,等价地,

B=[1 3; 3 4; 2 5];

B=[1 4; 3 4; 2 5];

我对获得上面报告的三个向量B中的任何一个都无所谓。

请注意,我不想要

B=[1 3; 1 4; 3 4; 2 5];

作为 (1,3), (1,4), (3,4) 中的一对是冗余的,即,如果 A(1)=A(3 )A(1)=A(4),然后是 A(4)=A(3),其他组合类似。

我尝试使用unique,但unique提供的输出似乎都没有给出所需的矩阵。有什么帮助吗?

最佳答案

如果您不喜欢使用循环,请按照@Wolfie's answer中的建议,您可以使用accumarray :

[~,~,idx]=unique(A,'stable');
B = accumarray ...
( ...
idx(:), ...
(1:numel(A)).', ...
[], ...
@(x) ...
{ ...
[repmat(x(1),numel(x)-1,1) x(2:end,1)] ...
} ...
);
result = vertcat(B{:})

关于matlab - Matlab中矩阵相等元素的位置对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51670748/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com