使用 strfind 过滤 MATLAB 结果

使用 strfind 过滤 MATLAB 结果
myver = ver;
myver(1:5).Name

返回:

ans = 'Computer Vision System Toolbox'
ans = 'Control System Toolbox'
ans = 'Curve Fitting Toolbox'
ans = 'DSP System Toolbox'
ans = 'Database Toolbox'

字符串查找

strfind(myver(1:35).Name,'Toolbox') 

返回错误:

Error using strfind
Unrecognized parameter name 'Curve Fitting Toolbox'.

我正在寻找包含单词“Toolbox”的所有条目的列表。为什么 strfind 在第三个条目上出错?

任何能进一步明确问题的反馈或编辑都将受到赞赏。

答案1

myver(1:5).Name返回逗号分隔列表

strfind(myver(1:5).Name,'Toolbox') 是相同的:

strfind('Computer Vision System Toolbox', 'Control System Toolbox', ...
 'Curve Fitting Toolbox', 'DSP System Toolbox', 'Database Toolbox', 'Toolbox');

显然这是无效的语法。请阅读strfind函数来查看有效的语法。

您需要在应用之前将此逗号分隔列表的元素合并到一个单元格数组中,strfind即:

tmpVar = {myver(1:35).Name};        %concatenating the list into a cell-array
check = strfind(tmpVar,'Toolbox');  %finding which cells contain 'Toolbox'
logidx = ~cellfun(@isempty,check);  %logical indices of the cells which contain 'Toolbox'
tmpVar{logidx}                      %Required result (as a comma-separated list)

相关内容