矩阵有m行n列(n是不超过10的数字),第n列包含1或0(二进制)。我想使用这个二进制作为决定取出相关的行(如果是1,或者如果为0)。我知道这可以通过使用IF条件迭代来完成。
然而,对于行数m达到数百(最多1000)的矩阵,这可能变得不切实际。还有哪些其他程序?
答案 0 :(得分:4)
您可以使用logical
datatypes for indexing。例如,
M =
1 2 0 4 5 1 7 8 0
M = [1 2 0;4 5 1;7 8 0];
v = (M(:,n) == 1);
M(v,2) = 1;
M =
1 2 0 4 1 1 7 8 0
现在,如果列n
中的相应元素为真,则已将第2列中的所有元素设置为1。
请注意,v = (M(:,n) == 1)
会将n
列转换为逻辑向量。您可以使用v = logical(M(:,n));
我建议使用blog entry详细了解逻辑索引。
如果要删除行,请使用:
M(v,:) = [];