gpt4 book ai didi

matlab - 根据 matlab 的列拆分矩阵。

转载 作者:太空宇宙 更新时间:2023-11-03 20:12:59 25 4
gpt4 key购买 nike

A = [1,4,2,5,10
2,4,5,6,2
2,1,5,6,10
2,3,5,4,2]

我想在最后一列将它分成两个矩阵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]

另外,这种方法也适用于大矩阵,比如矩阵100*22根据最后一列的值被matlab分成9组。

最佳答案

使用logical indexing

B=A(A(:,end)==10,:);
C=A(A(:,end)==2,:);

返回

>> B
B =
1 4 2 5 10
2 1 5 6 10

>> C
C =
2 4 5 6 2
2 3 5 4 2

编辑:在这里回复 Dan 的评论是一般情况的扩展

e = unique(A(:,end));
B = cell(size(e));
for k = 1:numel(e)
B{k} = A(A(:,end)==e(k),:);
end

或者更紧凑的方式

B=arrayfun(@(x) A(A(:,end)==x,:), unique(A(:,end)), 'UniformOutput', false);

所以对于

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

您得到元胞数组 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

关于matlab - 根据 matlab 的列拆分矩阵。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18505010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com