filtering MATLAB results with strfind
By John Parsons •
myver = ver;
myver(1:5).Namereturns:
ans = 'Computer Vision System Toolbox'
ans = 'Control System Toolbox'
ans = 'Curve Fitting Toolbox'
ans = 'DSP System Toolbox'
ans = 'Database Toolbox'Stringfind
strfind(myver(1:35).Name,'Toolbox') Returns the error:
Error using strfind
Unrecognized parameter name 'Curve Fitting Toolbox'.I am seeking a list of all entries with the word 'Toolbox'. Why does strfind err on the third entry?
Any feedback or edits that sharpen the question are appreciated.
1 Answer
myver(1:5).Name returns a comma-separated list.
strfind(myver(1:5).Name,'Toolbox') is the same as:
strfind('Computer Vision System Toolbox', 'Control System Toolbox', ... 'Curve Fitting Toolbox', 'DSP System Toolbox', 'Database Toolbox', 'Toolbox');Clearly this is invalid syntax. Read the documentation of the strfind function to see the valid syntax.
You need to combine this comma-separated list's elements in a cell-array before applying strfind i.e:
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)