Fan*_*ill 3 matlab split matrix
A = [1,4,2,5,10
2,4,5,6,2
2,1,5,6,10
2,3,5,4,2]
Run Code Online (Sandbox Code Playgroud)
我想通过最后一列A - > B和C将它分成两个矩阵
B = [1,4,2,5,10
2,1,5,6,10]
C = [2,4,5,6,2
2,3,5,4,2]
Run Code Online (Sandbox Code Playgroud)
此外,该方法可以应用于大矩阵,如矩阵100*22,根据最后一列值通过matlab分为9组.
使用逻辑索引
B=A(A(:,end)==10,:);
C=A(A(:,end)==2,:);
Run Code Online (Sandbox Code Playgroud)
回报
>> B
B =
1 4 2 5 10
2 1 5 6 10
>> C
C =
2 4 5 6 2
2 3 5 4 2
Run Code Online (Sandbox Code Playgroud)
编辑:在回复丹的评论这里是一般情况的扩展
e = unique(A(:,end));
B = cell(size(e));
for k = 1:numel(e)
B{k} = A(A(:,end)==e(k),:);
end
Run Code Online (Sandbox Code Playgroud)
或者更紧凑的方式
B=arrayfun(@(x) A(A(:,end)==x,:), unique(A(:,end)), 'UniformOutput', false);
Run Code Online (Sandbox Code Playgroud)
因此对于
A =
1 4 2 5 10
2 4 5 6 2
2 1 5 6 10
2 3 5 4 2
0 3 1 4 9
1 3 4 5 1
1 0 4 5 9
1 2 4 3 1
Run Code Online (Sandbox Code Playgroud)
你得到单元格数组元素的矩阵 B
>> B{1}
ans =
1 3 4 5 1
1 2 4 3 1
>> B{2}
ans =
2 4 5 6 2
2 3 5 4 2
>> B{3}
ans =
0 3 1 4 9
1 0 4 5 9
>> B{4}
ans =
1 4 2 5 10
2 1 5 6 10
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11965 次 |
| 最近记录: |