在 matlab 中我有两个不同的矩阵。
举个例子
A =[34.5, 35.8, 24.5, 32.3;
23.4, 33.1, 31.2, 14.6];
第二个是:
B =[34.5, 32.3; 36.7
23.4, 14.6, 65.1];
我想要一个新的,每列只包含相同的值,
例如C =[34.5, 32.3;
23.4, 14.6];
矩阵 A 和 B 的列数不同。
有没有matlab的函数或者可以帮我解决这个问题吗?
最佳答案
这个diff
基于方法可能会更有效 -
%// Concatenate A and B
AB = sortrows([A B].') %//'
%// Use DIFF to get a logical array of repetitions and
%// use that to select elements from AB
out = unique(AB([false ; ~any(diff(AB,[],1),2)],:),'rows').'
您可以用这样的内容替换最后一行 -
out = AB(strfind([false ; ~any(diff(AB,[],1),2)].',[0 1]),:).'
对于一个优雅的解决方案,我认为评论中建议的基于 intersect
的解决方案可能适合 -
out = intersect(A.',B.','rows','stable').'
关于matlab - 比较两个矩阵并在matlab中每列仅获得相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29479760/