Joe*_*eth 6 indexing matlab matrix
我正在处理这种格式的矩阵:
M =
1 1 3
1 1 1
1 2 2
1 2 1
1 2 2
2 1 5
2 1 1
2 2 3
2 2 4
2 2 2
...
Run Code Online (Sandbox Code Playgroud)
我想要做的是提取子矩阵,其中第一列和第二列中的值可以分组,以便:
M1 =
1 1 3
1 1 1
M2 =
1 2 2
1 2 1
1 2 2
M3 =
2 1 5
2 1 1
...
Run Code Online (Sandbox Code Playgroud)
我一直在努力思考如何为此索引矩阵,我有一个矩阵可用:
I =
1 1
1 2
2 1
2 2
...
Run Code Online (Sandbox Code Playgroud)
我可以用来索引.我想知道我是否可以使用它,但我不是百分百确定如何.我不想使用for
循环,因为矩阵可能相当大并且复杂度的顺序可能变得非常大.
谢谢你的阅读!
Lui*_*ndo 12
这是很容易做到与unique
和accumarray
:
M = [ 1 1 3
1 1 1
1 2 2
1 2 1
1 2 2
2 1 5
2 1 1
2 2 3
2 2 4
2 2 2 ]; %// data
[~, ~, u] = unique(M(:,1:2), 'rows'); %// unique labels of rows based on columns 1 and 2
M_split = accumarray(u(:), (1:size(M,1)).', [], @(x){M(sort(x),:)}); %'// group rows
% // based on labels
Run Code Online (Sandbox Code Playgroud)
这给出了包含部分矩阵的单元阵列.在你的例子中,
M_split{1} =
1 1 3
1 1 1
M_split{2} =
1 2 2
1 2 1
1 2 2
M_split{3} =
2 1 5
2 1 1
M_split{4} =
2 2 3
2 2 4
2 2 2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
104 次 |
最近记录: |