如何在matlab的ismember函数中实现通配符?

时间:2013-08-11 16:29:15

标签: matlab string-matching

如何在matlab中执行此操作;

ismember(file_names,['*.mp4'])

2 个答案:

答案 0 :(得分:5)

我会用regexp来做,就像这样:

result = ~cellfun(@isempty,(regexp(file_names,'\.mp4$')));

例如,

file_names = {'aaa.mp4','bbb.mp3'};

给出

result =

     1     0

答案 1 :(得分:3)

使用正则表达式(regexp)

使用regexp

可以轻松实现这一目标
tf = ~cellfun('isempty', regexp(file_names, '.*\.mp4'));

如果要强制模式匹配文件名的开头或结尾,则应分别添加插入符号(^)或美元符号($),例如:< / p>

%// Match pattern at the beginning of the filename
tf = ~cellfun('isempty', regexp(file_names, '^.*\.mp4'));

%// Match pattern at the end of the filename
tf = ~cellfun('isempty', regexp(file_names, '\.mp4$'));

替代方法(strfind)

如果您的搜索模式足够简单,则可以改为使用strfind

tf = ~cellfun('isempty', strfind(file_names, '.mp4'));

请注意,此方法不允许您搜索更复杂的模式,也不会检查条件(平凡),例如字符串末尾的模式外观......