【发布时间】:2014-10-10 13:02:23
【问题描述】:
我在工作中度过了糟糕的一天。我有一个非常简单的问题。
我有 2x100 矩阵,这样
[1 2 3 4 5 6 -2 -3 ....
2 4 5 3 2 -4 3 3 ...]
我想做的是检查矩阵的第一行并删除所有大于2的数字并删除row2中的相应条目。因此,例如,如果只有 1 个元素而不是大写,我们的矩阵将变为 2x99 矩阵。
【问题讨论】:
我在工作中度过了糟糕的一天。我有一个非常简单的问题。
我有 2x100 矩阵,这样
[1 2 3 4 5 6 -2 -3 ....
2 4 5 3 2 -4 3 3 ...]
我想做的是检查矩阵的第一行并删除所有大于2的数字并删除row2中的相应条目。因此,例如,如果只有 1 个元素而不是大写,我们的矩阵将变为 2x99 矩阵。
【问题讨论】:
你应该使用逻辑索引:
idxToKeep = yourMat(1, :) <= 2;
newMat = yourMat(:, idxToKeep);
或者如果您不想创建新矩阵:
yourMat = yourMat(:, idxToKeep);
或全部在一条线中:
yourMat = yourMat(:, yourMat(1, :) <= 2);
【讨论】:
a(:,a(1,:)<=0.2) = []; 也可以。万一有人想知道;不,它并不快,我推荐尼克的解决方案之一。 =)
> 2?而且它确实更慢:stackoverflow.com/questions/12421345/…