matlab - 我想对矩阵 A 的列进行分组,这些列在 Matlab 中的第三行具有相同的值

标签 matlab

对于矩阵 A(4 行,1000 列)。我想对第三行具有相同值的矩阵 A 的列进行分组。所以我必须有第三行包含相同值的子矩阵。

例如:

如果:

A =

     1     4     5     2     2     2     2     1     1     5
     1     4     5     4     4     2     2     4     5     2
     3     3     3     3     4     1     3     5     3     4
     4     5     5     5     4     1     5     5     5     5

然后

A1 =

     1     4     5     2     2     1
     1     4     5     4     2     5
     3     3     3     3     3     3
     4     5     5     5     5     5

A2 =

     2     5
     4     2
     4     4
     4     5

A3 =

     2
     2
     1
     1

结果可以是单元格的形式。

最佳答案

这是一种可能的破解方法(警告:我无法检查这个):

A =

 1     4     5     2     2     2     2     1     1     5
 1     4     5     4     4     2     2     4     5     2
 3     3     3     3     4     1     3     5     3     4
 4     5     5     5     4     1     5     5     5     5

specialRow=3;
unqCols = unique(A(specialRow,:));
numUnq = length(unqCols);
sepMats{numUnq}=[];

for i=1:numUnq
    sepMats{i} = A(:,A(specialRow,:)==unqCols(i));
end

关于matlab - 我想对矩阵 A 的列进行分组,这些列在 Matlab 中的第三行具有相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8693135/

相关文章:

matlab - 如何用对角线以下的点修复 ROC 曲线?

string - MATLAB 中的整数列表到字符串列表

image - Matlab 中的二进制图像

当我使用 malloc 而不是 mxMalloc 时 MATLAB 崩溃

matlab - 绘制幅度和频率随时间增加的正弦波

MATLAB - 使用 for 循环查找 x^2 + y 的所有组合

matlab - 如何检测图像中对象的实例?

matlab - 如何更改matlab世界地图中的经度标签位置

matlab - 在 Matlab 中量化数据

matlab - 为 3D 图形添加完整的 6 个边框