標籤:

如何用matlab在不用循環語句的情況下刪除包含某些特定字元的行?

以下表舉例,如何刪除簡稱中包含「銀行」的整行數據

刪除後變為

我已經用循環可以實現上述功能,但因為原數據行數非常龐大(有百萬行),逐行循環過慢,有沒有不用for循環語句的方法?

stata裡面一個 drop if regexm(var2,"銀行")==1 一個命令就可以迅速解決的功能,matlab應該也有類似的做法吧,不然每次做一個剔除都要幾十分鐘也太不方便了


從你的代碼看你是用的 cell 存儲的(不過更推薦用 table),應當可以這樣做:

dat = dat(cellfun("isempty",strfind(dat(:,2),"銀行")),:);

或者 2016b 的新函數:

dat = dat(~contains(dat(:,2),"銀行"),:);

不過如果你用的 2016b 的話說明你可以使用性能更好的 String 類型,建議配合 Table 使用


推薦閱讀:

Mathematica 有哪些不如 MATLAB 的地方?
如何用Matlab畫一朵花?
自學 MATLAB,有哪些小項目值得推薦?
大家用matlab有遇到過哪些槽點?
如何使用MATLAB畫三維的蘋果?

TAG:MATLAB |