根据另一个排序矩阵

26日视图(30天)
亲爱的所有,
我有下面的问题来解决。
清晰的
clc
%一个矩阵定义如下
= [11 0.001 3
11 0.001 - 4
12个0.003 - 5
9 0.002 6
8 0.000 7
10 0.004 8
8 0.000 9
9 0.002 10];
% B矩阵是参考
B = 0.000 [8
8 0.000
9 0.002
十0.004
9 0.002
11 0.001
11 0.001
12个0.003);
我想要一个这样的前两列配合B(和另一个列进行排序一致,当然)。我使用这段代码,但问题是,因为在我repeted条件结果不是我的愿望。
~,Y = ismember(一个(:,1:2),B,“行”);
[~ Z] = (Y);
C = (Z,:);
% C = 8 0.000 7
% 8 0.000 9
% 9 0.002 6
% 9 0.002 10
% 10 0.004 8
% 11 0.001 - 3
% 11 0.001 - 4
% 12 0.003 - 5
但是我想要的是什么
% C = 8 0.000 7
% 8 0.000 9
% 9 0.002 6
% 10 0.004 8
% 9 0.002 10
% 11 0.001 - 3
% 11 0.001 - 4
% 12 0.003 - 5
你有什么建议,不涉及使用嵌套循环和条件?
非常感谢你的关注!
Mattia
2的评论
Mattia Salomone
Mattia Salomone 2分钟前
谢谢你的回答。在这种情况下它们出现在C的顺序应该是他们在与[8 0]a。在这种情况下,例如,我想要的
(8 0 7
8 0 9)
因为他们对这个顺序出现。

登录置评。

答案(1)

Torsten
Torsten 约2小时前
编辑:Torsten 约2小时前
= [11 0.001 3
11 0.001 - 4
12个0.003 - 5
9 0.002 6
8 0.000 7
10 0.004 8
8 0.000 9
9 0.002 10];
% B矩阵是参考
B = 0.000 [8
8 0.000
9 0.002
十0.004
9 0.002
11 0.001
11 0.001
12个0.003);
[~,idx] = sortrows (A [1 - 2]);
[~,jdx] = sortrows (B (1 2));
C = (idx (jdx):)
C = 8×3
8.0000 0 0 7.0000 8.0000 9.0000 9.0000 0.0020 6.0000 10.0000 0.0040 8.0000 9.0000 0.0020 10.0000 11.0000 0.0010 3.0000 11.0000 0.0010 4.0000 12.0000 0.0030 5.0000
1评论
Mattia Salomone
Mattia Salomone 9分钟前
谢谢你的回答,但是您的解决方案适用于这种情况,但是如果为例
B = 0.002 [9
8 0.000
8 0.000
十0.004
9 0.002
11 0.001
11 0.001
12个0.003);
输出C有一个不同的顺序:
9.0000 C = 8.0000 0
9.0000 0.0020 6.0000
8.0000 0 7.0000
10.0000 0.0040 8.0000
9.0000 0.0020 10.0000
11.0000 0.0010 3.0000
11.0000 0.0010 4.0000
12.0000 0.0030 5.0000

登录置评。

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!