Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在matlab中找到同一行中的两个不同字符串_String_Matlab_Find - Fatal编程技术网

String 如何在matlab中找到同一行中的两个不同字符串

String 如何在matlab中找到同一行中的两个不同字符串,string,matlab,find,String,Matlab,Find,我有一个从文本扫描中获得的单元格,我想找到包含特定字符串的行的索引 fid = fopen('data.txt'); E = textscan(fid, '%s', 'Delimiter', '\n'); 我想知道那些有特定文本的行的行号(索引),例如,我想找到包含关键字“2016”的行: 但我想找到那些有两个关键字“2016”和“Mathew Perry”的行的索引(仅那些同时有两个关键字的行) 我尝试使用此代码,但不起作用 rows = find(contains(E{1},"2016"

我有一个从文本扫描中获得的单元格,我想找到包含特定字符串的行的索引

fid = fopen('data.txt');
E = textscan(fid, '%s', 'Delimiter', '\n');
我想知道那些有特定文本的行的行号(索引),例如,我想找到包含关键字“2016”的行:

但我想找到那些有两个关键字“2016”和“Mathew Perry”的行的索引(仅那些同时有两个关键字的行)

我尝试使用此代码,但不起作用

rows = find(contains(E{1},"2016" && contains(E{1},"Mathew Perry");
我得到的错误是:

| |和&&运算符的操作数必须可转换为逻辑标量值


要查找单个字符串,请执行以下操作:

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

使用strfind而不是find。您可以使用和/或尝试上述方法。如果它工作正常,那么就没有问题;如果不是,则分别获取每个单词的索引,并获取索引的交点

|
替换为
|
,将
&&
替换为
&
您的代码中存在一些错误,我假设这些错误只是问题输入错误,而不是实际代码中的错误-缺少所有
包含的
函数的右括号!有关EBH所说的内容以及
&
&
之间的区别的更多信息,请参阅OP的问题在于
&
错误,不要认为您已经解决了。如果它不起作用,单个字符串的索引可以通过集合的交集来使用。contains对于16b是新的,在这种情况下应该是首选。对于大型字符串数组,contains比strfind快得多。
idx = strfind(E{1}, '2016');
idx = find(not(cellfun('isempty', idx)));