我可以使用或不使用循环进行以下编码吗?
实际上我的字符数组包含超过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
现在,在uniques
和word
arays之前看到上面的示例,我的系统必须返回0
good
,因为good
不在uniques
1}}和0
值1
相同,ok
uniques
,因为它确实存在于{0,0,0,0,1,0,1}
中。总而言之,我最终必须ind=[]
..
运行后,它会给我{{1}}
请指导
答案 0 :(得分:1)
您已经描述了ismember
功能的确切功能:
ismember(word, uniques);
顺便说一句,这就是@nkjt关于修复循环的说法:
for i=1:size(word,2)
ind(i)=strmatch(word(i), uniques, 'exact');
end
但是这个循环是不必要的,因为Matlab将它作为内置函数