find(ismember(cellfun(@(V) lower(char(V)), inputs, 'uniform', 0), cellfun(@lower, {'str1', 'str3', 'str4'}, 'uniform', 0)))or
find(any(cell2mat(cellfun(@(c)strcmpi(c,inputs).', {'str1' 'str3' 'str4'}, 'UniformOutput',false)),2))
The first of those has the small flaw that a non-character value that happened to have the same numeric value as a single char target string could be recognized. For example 98 could be matched as if it were 'b'. Also, not everything can be converted to char -- logical cannot, struct cannot.
