0

我在matlab中有一个popupmenu使用类。uicontrol但是,大于 100 万的数字以科学计数法表示:

这看起来很奇怪

这是使用以下代码生成的:

sPropGrid = uiextras.Grid('Parent', staticPropPanel);
...
self.nSamplesEdit = uicontrol('Style', 'popupmenu', 'Parent', sPropGrid, ...
                'String', {[256 16384 32768 65536 131072 262144 524288 1048576 2097152 16252928]});

我想停止这个,并以正常格式显示整个数字。我该怎么做呢?

4

1 回答 1

2

的简单示例:

f=figure;
L=uicontrol('parent',f,'style','popupmenu','string',{'1','2','6000000'});

没有表现出这种行为。

生成这些值的代码是什么?由于 popupmenu 使用字符串元胞数组来表示其值,因此生成 GUI 的代码很可能正在使用

sprintf('%0.5g',value);

或者沿着这些思路向弹出菜单输入值。如果您将其更改为

sprintf('%d',value); 

或者

sprintf('%.0f',value);

对于浮点值(尽管我想样本数应该是整数),它应该具有您想要的行为。

编辑:

除了回答您的额外信息。

要使用 sprintf 使用数字数组按照您的意愿进行格式化,您可以对任意数组 X 使用以下语法:

arrayfun(@(x) {sprintf('%d',x)},X);

因此,在您的弹出菜单中,您可以使用:

self.nSamplesEdit = uicontrol('Style', 'popupmenu', 'Parent', sPropGrid, ...
    'String', arrayfun(@(x) {sprintf('%d',x)},...
    [256 16384 32768 65536 131072 262144 524288 1048576 2097152 16252928]));
于 2013-06-13T16:44:47.207 回答