我在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]});
我想停止此操作,并以正常格式显示整个数字。我该怎么做?
答案 0 :(得分:2)
实施例子:
f=figure;
L=uicontrol('parent',f,'style','popupmenu','string',{'1','2','6000000'});
未显示此行为。
生成这些值的代码是什么?由于popupmenu使用字符串的单元格数组来表示其值,因此生成GUI的代码很可能正在使用
sprintf('%0.5g',value);
沿着这些行输入值到popupmenu的东西。如果将其更改为
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]));