matlab - 比较两个矩阵并在matlab中每列仅获得相同的值

标签 matlab matrix

在 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/

相关文章:

pdf - 在 MATLAB 中将 "heavy"图保存为 PDF - 渲染问题

matlab - 将 MATLAB 与 AMPL 结合使用

c# - 访问 N(未知)维矩阵中所有点的算法

arrays - 写入文件错误 : "Too many files open"

Matlab:如何在保留标签信息的同时将我的数据矩阵拆分为两个随机的列向量子集?

arrays - 将向量数组相互相乘

函数的python矩阵

r - 使用 R 识别相关矩阵中的相应元素?

c++ - 计算矩阵乘法的快速算法

matlab - 从一组中随机生成数字?