-2

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

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

%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

结尾

4

1 回答 1

0

在:

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

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

请在Matlab Central查看详细信息。

于 2013-02-27T21:25:09.387 回答