查找 MATLAB 矩阵中重复次数最多的行

发布于 2024-10-13 15:02:43 字数 318 浏览 7 评论 0原文

我正在寻找一个函数来查找 MATLAB 中矩阵中重复次数最多(即模态)的行。类似于:

>> A = [0, 1; 2, 3; 0, 1; 3, 4]

A =

 0     1
 2     3
 0     1
 3     4

然后运行:

>> mode(A, 'rows')

将返回 [0, 1],理想情况下,第二个输出给出该行出现的索引(即 [1, 3]'。)

有谁知道这样的功能吗?

I am looking for a function to find the most repeated (i.e. modal) rows of a matrix in MATLAB. Something like:

>> A = [0, 1; 2, 3; 0, 1; 3, 4]

A =

 0     1
 2     3
 0     1
 3     4

Then running:

>> mode(A, 'rows')

would return [0, 1], ideally with a second output giving the indexes where this row occurred (i.e. [1, 3]'.)

Does anyone know of such a function?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

來不及說愛妳 2024-10-20 15:02:43

您可以使用 UNIQUE 获取唯一行索引,然后调用 MODE

[uA,~,uIdx] = unique(A,'rows');
modeIdx = mode(uIdx);
modeRow = uA(modeIdx,:) %# the first output argument
whereIdx = find(uIdx==modeIdx) %# the second output argument

You can use UNIQUE to get unique row indices, and then call MODE on them.

[uA,~,uIdx] = unique(A,'rows');
modeIdx = mode(uIdx);
modeRow = uA(modeIdx,:) %# the first output argument
whereIdx = find(uIdx==modeIdx) %# the second output argument
巨坚强 2024-10-20 15:02:43

答案可能并不正确。尝试 A = [2, 3; 0, 1; 3、4; 0, 1]。
应该是以下内容:

[a, b, uIdx] = unique(A,'rows');
modeIdx = mode(uIdx);
modeRow = a(modeIdx,:) %# the first output argument
whereIdx = find(ismember(A, modeRow, 'rows'))  %# the second output argument

The answer may not be right. Try A = [2, 3; 0, 1; 3, 4; 0, 1].
It should be the following:

[a, b, uIdx] = unique(A,'rows');
modeIdx = mode(uIdx);
modeRow = a(modeIdx,:) %# the first output argument
whereIdx = find(ismember(A, modeRow, 'rows'))  %# the second output argument
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文