我正在编写一段代码,它应该在 Nx3 矩阵E
中找到包含 Mx3 矩阵值的行T
,但它们的顺序不一定相同。我写了一些有效的东西,但我对这种风格不满意,并希望使用ismember
and find 对矩阵应用逻辑运算,而不是我正在使用的循环:
E = [7 36 37; 9 1 5; 4 34 100; 4 12 33; 4 34 33];
T = [37 7 36; 4 34 33];
for i=1:size(T,1)
T(i,:) = sort(T(i,:));
end
for i=1:size(E,1)
E(i,:) = sort(E(i,:));
end
res = zeros(size(T,1),1);
for i=1:size(T,1)
a = ismember(E,t(i,:));
res(i,1) = find(sum(a,2)==3);
end
我的想法是对 and 的每一行进行排序E
,T
因此它们的顺序相同,然后将每一行与循环进行比较。但是,我正在尝试学习以更 MATLAB 风格编写我的代码,并希望应用ismember
并可能找到执行相同的操作。像这样的东西:
a = sum(ismember(E,T(1,1))~=0,2);
b = sum(ismember(E,T(1,2))~=0,2);
c = sum(ismember(E,T(1,3))~=0,2);
r = find(a&b&c);
还有更优雅的解决方案吗?
谢谢!