在MATLAB中按值拆分矩阵

时间:2011-04-12 20:16:51

标签: matlab matrix split

我想知道是否有一个MATLAB解决方案将矩阵分割成子矩阵,如下所示:

矩阵是:

A =
16     2    3
5      11   10
9      7    6
4      14   15
5      1    3

我想把以5开头的行换成另一个矩阵,从16开始到另一个矩阵,等等。

是否有这样的功能,或者我应该使用if / for approach?

2 个答案:

答案 0 :(得分:3)

这是一个使用函数SORTROWSUNIQUEACCUMARRAYMAT2CELL创建一个单元格数组的解决方案,每个单元格都存储一组相同的行第一列中的值:

>> sortedA = sortrows(A,1);  %# Sort the rows by the first column
>> [~,~,uniqueIndex] = unique(sortedA(:,1));  %# Find indices of unique values
                                              %#   in the first column
>> cellA = mat2cell(sortedA,...                       %# Break matrix up by rows
                    accumarray(uniqueIndex(:),1),3);  %#   into a cell array
>> cellA{:}  %# Display the contents of the cells

ans =

     4    14    15

ans =

     5    11    10
     5     1     3

ans =

     9     7     6

ans =

    16     2     3

答案 1 :(得分:1)

我想我发现它=)

for n=1:max(max(A))
M{n} = A(find(A(:,1)==n),:);
end

现在M{n}是以n开头的所有行的矩阵。 =)