2017-06-05 29 views
0

我從文字掃描獲得的細胞,我想找到包含特定字符串的行的索引,如何找到在同一條線上兩個不同的字符串在MATLAB

fid = fopen('data.txt'); 
E = textscan(fid, '%s', 'Delimiter', '\n'); 

,我想知道行具有特定文本的那些行的數字(索引),例如我想找到的關鍵字是「2016」的行:

rows = find(contains(E{1},"2016"); 

,但我想找到那些具有兩個關鍵字「2016」和「馬修·派瑞」線的指標(僅具有這兩個線關鍵字)。

我嘗試使用此代碼,但不工作

rows = find(contains(E{1},"2016" && contains(E{1},"Mathew Perry"); 

我得到的錯誤是:

操作數的||和& &運算符必須可轉換爲邏輯標量值。

+3

取代''||以'|'和''&&用'&' – EBH

+0

你在你的代碼中的一些錯誤,這些錯誤我假設只是質疑錯別字,而不是在你的實際代碼 - 缺少右括號所有的你的'包含'功能!有關EBH所說的更多信息以及'&'和'&&'之間的區別,請參閱[documentation](https://uk.mathworks.com/help/matlab/ref/and.html#bu46s7m-4) – Wolfie

回答

0

要找到一個字符串:

idx = strfind(E{1}, '2016'); 
idx = find(not(cellfun('isempty', idx))); 

使用strfind而不是發現。 YOu可能會嘗試以上方法和/或。如果它工作正常,那麼沒問題;如果不是,則分別爲每個單詞獲取索引並獲得索引的交集。

+0

OP的問題是出現'&&'錯誤,不認爲你真的解決了這個問題。 – Wolfie

+0

如果它不起作用,單個字符串的索引可以通過集合的交集使用。 –

+0

是的......我讓用戶用_strfind_與操作員(和/或)一起檢查。 :) –

相關問題