Walker0728 发表于 2010-11-13 10:39:07

GUI的问题

hf=figure('Color',,'Position',,...

'Name','数制转换','NumberTitle','off','MenuBar','none');
这是我看到别人编写的一段程序
请问高手其中Position后面的数据时怎么确定的?

chenzhian 发表于 2010-11-13 11:28:54

'position'位置向量。其中,表示相对于图形对象左下角的uicontrol的左下角位置。表示uicontrol的尺寸大小,其单位由属性Units确定
Units包括
inches:
centimeters:
normalized:
points:
{pixels}:        位置属性值的单位依次为
英寸
厘米
归一化的坐标值,图形的左下角映射为而右上角的映射为为
打印设置点,等于1/72 英寸
屏幕的象素。计算机屏幕分辨率的最小单位。

zhouyang664 发表于 2010-11-13 14:15:47

哈哈,最简单也是最直接的办法,多figure几次就明白了!

Walker0728 发表于 2010-11-13 15:09:11

chenzhian 谢谢你的回答,麻烦你帮我看看下面的程序是什么意思
    chpop={'spring','summer','autumn','winter'};
       chlist={'grid on','grid off','box on','box off'};
       colormap(eval(chpop{n1}));
       eval(chlist{n2});

chenzhian 发表于 2010-11-13 16:50:52

chpop={'spring','summer','autumn','winter'};%chpop元胞
       chlist={'grid on','grid off','box on','box off'};
       colormap(eval(chpop{n1}));   %得到相应的chpop的第n1个字符串,执行如colormap(spring)命令
       eval(chlist{n2});    %将 chlist的第n2元素的字符串传到命令窗口去执行对应的命令

Walker0728 发表于 2010-11-14 21:39:45

chenzhian
帮我看个程序
设计一个简单信号分析仪的程序,要求根据输入的两个频率和时间间隔,计算函数 的值,并对函数进行快速傅立叶变换,最后分别绘制时域和频域的曲线。
我设计的程序如下:
设置第一个坐标轴的标识为:frequency_axes, 用于显示频域图形; 第二个坐标轴的标识为:time_axes, 用于显示时域图形。三个文本编辑框的标识为f1_input, f2_input, t_input,分别用于输入两个频率和自变量时间的间隔。
分别设置三个文本编辑框的初始值为:
f1_input=20
f2_input=50
t_input=0:0.001:0.5
pushbutton1_Callback()中,代码包括以下部分
f1=get(handles.f1_input,'String');
f2=get(handles.f2_input,'String');
t=str2double(get(handles.t_input,'String'));
x=sin(2*pi*f1*t)+sin(2*pi*f2*t);
y=fft(x,512);
m=y.*conj(y)/512;
f=1000*(0:256)/512;
axes(handles.frequency_axe)
plot(f,m(1:257))
set(handles.frequency_axe,'XminorTick','on')
grid on
axes(handles.time_axes)%选择适当的坐标轴
plot(t,x)
set(handles.time_axes,'XminorTick','on')
grid on
但是我得到的结果点击绘图时不显示图形好像只有grid on 有效
还有就是在matlab中输入f1或f2或t时会有结果的输出吗
我认为应该是有的,但是在matlab中输入f1时显示说是f1没有定义

chenzhian 发表于 2010-11-14 23:02:05

楼上的你的程序思路是对的,就这里有点问题:f1=get(handles.f1_input,'String');
f2=get(handles.f2_input,'String');
得到的是两个字符串,你用来做数值计算,肯定会提示你这两个变量没定义的。
f1_1=get(handles.f1_input,'String');
f2_1=get(handles.f2_input,'String');
转化成数值型的。
f1=str2double(f1_1);
f2=str2double(f2_1);
欧了!

zhouyang664 发表于 2010-11-14 23:24:57

f1=get(handles.f1_input,'String');
f2=get(handles.f2_input,'String');
改为:
f1=str2double(get(handles.f1_input,'String'));
f2=str2double(get(handles.f2_input,'String'));
我很诧异你的变量t使用了str2double,为什么f1,f2,没有这么处理呢?嘿嘿...
6# Walker0728

Walker0728 发表于 2010-11-15 08:44:44

chenzhianzhouyang664 谢谢你们的回答
我用过你们说的方法
f1=str2double(get(handles.f1_input,'String'));
f2=str2double(get(handles.f2_input,'String'));
但是仍然不能得到正确的结果,点击绘图的结果仍然是没有图形的显示
在matlab中输入f1,f2是仍然说是没有定义

chenzhian 发表于 2010-11-15 10:58:04

不可能啊,这么简单的界面。
这样你方便的话把整个程序贴上来,我们帮你看下。

Walker0728 发表于 2010-11-15 11:06:55

我对控件的步置没有编程,是直接修改属性得到的
然后回调函数就是上面写的
页: [1]
查看完整版本: GUI的问题