matlab的listbox选择多行_MATLAB LISTBOX 折腾了我两个小时

事件:用GUI做K-Means聚类算法

目的:试图将每次迭代过程中各类的类心在listbox

中显示

以前的思维:在VB或VC中都可以很方便的用add方法

现状:Matlab中不支持这样的处理方式,matlab的思维是对于每一个unicontrol通过get,set来获得和设置相应的属性,当然在获取过程中要牵涉到句柄,这个很简单,不值得一说。

我首先查看了Listbox的所有属性,理所当然地会用string属性,关键是怎么更改属性,我最初的想法是将要显示的内容存放在一个字符数组里,为了不覆盖前面的内容,我这样做:

for ...

centerstr=[];

centerstr=[centerstr,newcontext];

set(handles.center_listbox,'string',centerstr);

end

但一般有一个问题很难预料到,就是centerstr和newcontext的维数匹配问题,我就是受这个问题所困扰。

显然,类心得坐标是double型的,在为数值型时,保留到小数点后面4位,但在num2str后之后,他把double型最后的零扔掉了,这就造成centerstr和newcontext的维数不匹配。我起初想到用if

语句来判断,谁的维数低了我把他补零,但在迭代过程中,这种现象是随机的,所以我费了很大力气,还是无功而返。

这时候,我想到了internet,打开google,输入matlab类型转换,企图找到曾经碰到相同问题的通知,可还是。。。我就到matlab官方网站上,看有没有提问去,在那儿问问,自然想到了问题得用英语写,所以我又在google

里typed "how to add items to listbox in

matlab",这下找到了救星,就是matlab里的帮助。问题终于顺利解决。

具体实现很简单:(当时看到了想吐血)

str=get(handles.center_listbox,'string');

str{end+1}=newcontext;

set(handles.center_listbox,'string',str);

下面是matlab里的example:

Introduction

In many application

你可能感兴趣的:(matlab的listbox选择多行_MATLAB LISTBOX 折腾了我两个小时)