current plot
我想删除所有位于x轴5 & 10和y轴0 & 500之间的数据点。
givenData是一个包含数据的10000X2矩阵。
我写了下面的代码。我犯了什么错误?还有更好的方法吗?
for i=1:10000
if givenData(i,1)>5 && givenData(i,1)<10 && givenData(i,2)>0 && givenData(i,2)<500
givenData(i,:) = [];
end
end
plot(givenData(:,1),givenData(:,2),'b.','MarkerSize',5);hold
contour(xgrid,ygrid,Z,[4e-5, 4e-5],'EdgeColor',[1 0 0],'ShowText','on','LineWidth',2);
任何帮助我都感激不尽。谢谢。
1条答案
按热度按时间zqry0prt1#
在迭代数组时,您将从数组中删除元素,因此下一个元素将移到删除点,并跳过检查。
要解决此问题,可以完全跳过循环并使用逻辑索引:
或向后迭代数组:
一般来说,避免循环可以让MATLAB更快地执行操作,但代价是索引数组需要更多的内存来处理。