【发布时间】:2017-09-10 22:14:40
【问题描述】:
我有一个大矩阵 A,我想删除其中的一些行,它们的索引在另一个向量 V 中。该向量未排序,因此下面的代码将不起作用
for i=1:length(V)
A(V(i))=[]
end
问题是当例如第 2 行被删除时,接下来我想删除第 4 行,它将删除第 5 行,因为第 5 行的索引现在是 4。我认为可以对 v 进行降序排序并删除像上面一样,但排序很耗时。还有其他人可以完成这项任务吗?
【问题讨论】:
我有一个大矩阵 A,我想删除其中的一些行,它们的索引在另一个向量 V 中。该向量未排序,因此下面的代码将不起作用
for i=1:length(V)
A(V(i))=[]
end
问题是当例如第 2 行被删除时,接下来我想删除第 4 行,它将删除第 5 行,因为第 5 行的索引现在是 4。我认为可以对 v 进行降序排序并删除像上面一样,但排序很耗时。还有其他人可以完成这项任务吗?
【问题讨论】:
您只需要传递整个索引向量即可删除。
MATLAB 支持非常强大的索引功能,学习它们可以简化代码编写并降低出错率。
% Delete all rows with row indices as in V
A(V, :) = []
【讨论】: