DataSet Row Deletion Issue

2 ビュー (過去 30 日間)
Rachel
Rachel 2014 年 10 月 15 日
コメント済み: Rachel 2014 年 10 月 15 日
Hello, I have a dataset called NO2 and vector of site IDs called SNO2. If a value in the 4th column of the data set (MonitorID) is contained in SNO2 I want to delete the entire row from the dataset. The dataset looks like this
INPUT_FID NEAR_FID DISTANCE MonitorID StationID Classification 14 18 0.137058 60711004 60712002 3
This is the code that I have written. I keep getting an error message that says the index of the matrix to remove exceeds the matrix dimensions. Thanks!
NO2=double(NO2);
for i=1:length(SNO2)
M=find(NO2(:,4)==SNO2(i))
NO2(M,:)=[]
end

採用された回答

the cyclist
the cyclist 2014 年 10 月 15 日
You can avoid the for loop altogether:
M = ismember(NO2(:,4),SNO2);
NO2(M,:)=[];
  1 件のコメント
Rachel
Rachel 2014 年 10 月 15 日
Thanks so much this works perfectly!

サインインしてコメントする。

その他の回答 (2 件)

Yu Jiang
Yu Jiang 2014 年 10 月 15 日
This means M is larger than the number of rows in NO2. After you see the error message, type M in the command window to see what is the value of it, and then compare it with size(NO2).

Image Analyst
Image Analyst 2014 年 10 月 15 日
The only thing I noticed off the top of my head was that if SNO2(i) was not found, M could be empty and you don't take that into consideration, like
if ~isempty(M)
% Found the number in column 4 of NO2.
% Delete those rows with that number.
NO2(M, :) = [];
end
I think you can do this whole loop without a loop is you use ismember().

カテゴリ

Help Center および File ExchangeNaNs についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by