在循环中使用strmatch

时间:2014-04-08 11:34:00

标签: matlab

我可以使用或不使用循环进行以下编码吗?

实际上我的字符数组包含超过5000的唯一字,而其他数组包含大约3000个字。我想搜索名为uniques的其他数组中名为word的数组中的每个单词,并希望创建一个特征向量,即值1(如果存在)和0如果不存在

我正在做以下事情..

load 'uniques'  %uniques={'alpha','ok',abc'};
fid=fopen(myfilename);
words=textscan(fid,'%s');
fclose(fid);
word=words{1,1}; %word={'good','bad',anywhere','countries','ok',done','abc'}

for i=1:size(uniques,2)
ind=strmatch(word(i), uniques, 'exact');
end

现在,在uniquesword arays之前看到上面的示例,我的系统必须返回0 good,因为good不在uniques 1}}和01相同,ok uniques,因为它确实存在于{0,0,0,0,1,0,1}中。总而言之,我最终必须ind=[] ..

运行后,它会给我{{1}}

请指导

1 个答案:

答案 0 :(得分:1)

您已经描述了ismember功能的确切功能:

ismember(word, uniques);

顺便说一句,这就是@nkjt关于修复循环的说法:

for i=1:size(word,2)
    ind(i)=strmatch(word(i), uniques, 'exact');
end

但是这个循环是不必要的,因为Matlab将它作为内置函数