matlab:为什么循环返回唯一的最后一个元素

时间:2013-02-23 21:13:42

标签: matlab

MatLab的: 这段代码检索某些页面的单词并将它们存储到wrd中,并将DB中的行存储到kwres中,然后将它们一起比较,并返回类似的单词。

为什么这段代码只返回数组的最后一个元素?

%connection to DB
con=database('Dic','','');
%retrieve kw_table rows (id,keywords)
kwres=fetch(con,'select * from kw_table');

[FileName,PathName]= uigetfile('*.txt');
dat= [PathName FileName];
txt=fileread(dat);
txt(~ismember(txt,['A':'Z' 'a':'z']))=' ';
wrd=strread(txt,'%s','delimiter',' ');

k=1;
for i=1:length(wrd)
s=wrd{i};
for j=1:length(kwres)
    if strcmpi(s,kwres(j,2))
        ids{k}=kwres(j,1);
        set(handles.listbox2,'String',s)
        k=k+1;
    end
end

1 个答案:

答案 0 :(得分:0)

在:

set(handles.listbox2,'String',s)

指定要显示的s中的字符串,因此您最终会显示找到的最后一个字符串(实际显示所有字符串,但在for循环进行时会相互覆盖)。 您应该创建一个列表并动态添加与该列表匹配的每个字符串。列表应该在s命令的参数中,而不是set

请查看详情Matlab Central如何操作。