【发布时间】:2015-02-27 13:46:07
【问题描述】:
我想知道如何在 Matlab 中丢弃矩阵中的元素。 我有一个矩阵“A”,其中包含 8 个人的所有可能组合,对于每个人,我有三个可能的选择,例如:
A=[1 1 1 1 1 1 1 1;
1 1 1 1 1 1 1 2;
1 1 1 1 1 1 1 3;
1 1 1 1 1 1 2 1;
1 1 1 1 1 1 2 2;
1 1 1 1 1 1 2 3;
1 1 1 1 1 1 3 1 ;
....
];
等..所有元素。
现在我有一个新的向量 B=[2 2] 包含前两个人的值,我想从 A 中获得一个具有所有可能组合的新矩阵,如上,丢弃所有不包含前两个人的 B 值。
我希望清楚。
提前致谢
【问题讨论】:
-
那么,最后一列是第一个人的,第二个人是倒数第二列?
-
所以,像这样 -
A(~ismember(A(:,1:2),[2 2],'rows'),:)? -
然后去掉波浪号:
A(ismember(A(:,1:2),[2 2],'rows'),:) -
如果 B 中只有 2 个元素,那么最快的方法是使用
A(A(:,1) == B(1) & A(:,2) == B(2),:)。 -
更好的选择是不首先创建整个矩阵。
标签: matlab matrix combinations