2017-06-05 98 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_与操作员(和/或)一起检查。 :) –

相关问题