www.pudn.com > MyGUI.rar > MyGUI_QiuNa.m, change:2008-11-04,size:3340b


%MyGUI_QiuNa.m 
%这是界面的功能是:对连续时间函数w(t)=exp(-abs(t))在【-5,5】区间内进行采样, 
%利用样条插值重构该连续函数,绘出重构图形并输出重构误差。 
 
%用户输入采样间隔(一般是(0,1)),按Enter键就可以得到所要的结果。 
 
%点击菜单栏中的Options选项,从下拉菜单中可以设置背景颜色和坐标轴的隐现等。 
%界面右侧的单选框,控制是否画坐标方格 
%界面右侧的两个按钮,控制是否画坐标轴方框 
 
 
%生成图形界面窗,定义坐标轴和图名 
h_fig=figure('name','MyGUI'); 
axes('unit','normalized','position',[0 0 1 1],'visible','off');%把原来窗口的轴不可见,以便后面自定义轴 
str='\fontname{楷体}样条插值进行信号重构';%写上标题 
text(0.12,0.93,str,'fontsize',18); 
set(h_fig,'unit','normalized','position',[0.1 0.25 0.7 0.6]);%设置界面的位置 
h_axes=axes('parent',h_fig,'unit','normalized',...  %自定义坐标轴 
    'position',[0.1 0.15 0.55 0.7],... 
    'xlim',[-5 5],'ylim',[0 1],'fontsize',8); 
%添加“编辑框”,接受用户输入数值并作图 
h_text1=uicontrol(h_fig,'style','text',...%生成静态文本 
    'unit','normalized','position',[0.7 0.77 0.2 0.1],... 
    'horizontal','left','string',{'输入采样间隔  (0,1)'},'fontsize',13); 
h_edit=uicontrol(h_fig,'style','edit',...%添加“编辑框” 
    'unit','normalized','position',[0.7 0.7 0.2 0.07],... 
    'horizontal','left',... 
    'callback',[... 
        'delta=str2num(get(gcbo,''string''));',...%接受用户输入采样间隔 
        't=-5:delta:5;w=exp(-abs(t));',...  %产生采样数据 
        'NO=length(t);tt=linspace(t(1),t(end),10*NO);',...%产生重构函数用的自变量 
        'ww=spline(t,w,tt);',...  %进行重构 
        'error=max(abs(ww-exp(-abs(tt))));',...    %计算误差 
        'plot(tt,ww,''b'');hold on;',...%画出重构函数曲线 
        'stem(t,w,''filled'',''r'');',...%画出原采样数据杆图 
        'error_str=[''误差='',sprintf(''%1.4g\'',error)];',...%在图上标出误差 
        'text(2.2,0.7,error_str,''fontsize'',13);hold off']); 
 
%添加两个单选框,控制是否画坐标方格 
uicontrol('style','radio','unit','normalized','position',[0.7 0.55 0.2 0.1],'string','grid on','callback',['grid on;']); 
uicontrol('style','radio','unit','normalized','position',[0.7 0.45 0.2 0.1],'string','grid off','callback',['grid off;']); 
 
%添加两个按钮,控制是否画坐标轴方框 
h_push1=uicontrol(h_fig,'style','push',... 
    'unit','normalized','position',[0.7 0.3 0.2 0.1],... 
    'string','box on','callback','box on'); 
h_push2=uicontrol(h_fig,'style','push',... 
    'unit','normalized','position',[0.7 0.2 0.2 0.1],... 
    'string','box off','callback','box off'); 
 
%制作顶层菜单项Options,包括设置背景颜色和坐标轴的隐现等功能 
BackColor=get(gcf,'Color');%获取当前背景颜色 
h_menu=uimenu('label','Options','Position',3);%在原来的菜单的第三个位置添加Options 
%设置下拉菜单的内容 
h_sub1=uimenu(h_menu,'label','Background Color'); 		%设置背景颜色	 
h_subsub1=uimenu(h_sub1,'label','Red','ForeGroundColor','r',...	%将背景设为红色		 
   'callback','set(gcf,''Color'',''r'')'); 
h_subsub2=uimenu(h_sub1,'label','Green','ForeGroundColor','g',...	%将背景设为绿色		 
   'callback','set(gcf,''Color'',''g'')'); 
h_subsub3=uimenu(h_sub1,'label','Reset',...     %将背景设为原来默认的颜色 
   'callback','set(gcf,''Color'',BackColor)'); 
h_sub2=uimenu(h_menu,'label','Axis on','callback','axis on','separator','on');%显示坐标轴并和上面的背景颜色画分隔线 
h_sub3=uimenu(h_menu,'label','Axis off','callback','axis off');%不显示坐标轴