Matlab GUI 调用函数后如何设置图形句柄?
我的程序如下:clfresetA1=0;A2=0;f1=0;f2=0;H=axes('unit','normalized','position',[0,0,1,1],'v...
我的程序如下:
clf reset
A1=0; A2=0; f1=0; f2=0;
H=axes('unit','normalized','position',[0,0,1,1],'visible','off');
set(gcf,'currentaxes',H);
str='\fontname{隶书}View Sine Wave';
text(0.12,0.93,str,'fontsize',13);
h_fig=get(H,'parent');
set(h_fig,'unit','normalized','position',[0.1,0.2,0.7,0.4]);
h_axes=axes('parent',h_fig,...
'unit','normalized','position',[0.1,0.15,0.55,0.7],...
'xlim',[0 15],'ylim',[0 1.8],'fontsize',8);
%因字数太多,中间略去一部分。
h_push=uicontrol(h_fig,'style','push',...
'unit','normalized','position',[0.67,0.03,0.125,0.1],...
'string','start',...
'callback','adl1(A1,f1,A2,f2)'...
);
function[]=adl(A1,f1,A2,f2)
t=0:1/1024:1-1/1024;
u1=A1*sin(2*f1*pi*t);
u2=A2*sin(2*f2*pi*t);
subplot(2,1,1);
plot(u1);
subplot(2, 1, 2),
plot(t, u2);
运行的时候,未调用函数时图形是这样的:
但是调用函数后,图形就是:
请高手说说,函数里要如何设定句柄才使它的图像不要那么宽呢? 展开
clf reset
A1=0; A2=0; f1=0; f2=0;
H=axes('unit','normalized','position',[0,0,1,1],'visible','off');
set(gcf,'currentaxes',H);
str='\fontname{隶书}View Sine Wave';
text(0.12,0.93,str,'fontsize',13);
h_fig=get(H,'parent');
set(h_fig,'unit','normalized','position',[0.1,0.2,0.7,0.4]);
h_axes=axes('parent',h_fig,...
'unit','normalized','position',[0.1,0.15,0.55,0.7],...
'xlim',[0 15],'ylim',[0 1.8],'fontsize',8);
%因字数太多,中间略去一部分。
h_push=uicontrol(h_fig,'style','push',...
'unit','normalized','position',[0.67,0.03,0.125,0.1],...
'string','start',...
'callback','adl1(A1,f1,A2,f2)'...
);
function[]=adl(A1,f1,A2,f2)
t=0:1/1024:1-1/1024;
u1=A1*sin(2*f1*pi*t);
u2=A2*sin(2*f2*pi*t);
subplot(2,1,1);
plot(u1);
subplot(2, 1, 2),
plot(t, u2);
运行的时候,未调用函数时图形是这样的:
但是调用函数后,图形就是:
请高手说说,函数里要如何设定句柄才使它的图像不要那么宽呢? 展开
展开全部
subplot(2,1,1); 是把整个figure分成两行一列,然后在其第一行这个区域画图的,所以会铺满
subplot('Position',[left bottom width height]) %先设定好区域
plot(u1); %再画图,就可以了
subplot('Position',[left bottom width height]) %先设定好区域
plot(u1); %再画图,就可以了
追问
首先,要说对不起,上面函数的名字是adl1,因为不小心,弄错了。
其次,我发现在函数里加语句
subplot('Position',[left bottom width height]);
基本没有用,因为我试着改了这几个值,但出来的图没有变化啊。
追答
不是加,是替换subplot(2,1,1); 和subplot(2,1,2);这两个;
换成 subplot('Position',[0.1,0.55,0.55,0.3]); 和 subplot('Position',[0.1,0.15,0.55,0.3]);
还有一个办法,就是先画好两个axes,然后把图分别画在两个坐标中。
subplot(h_axes1); plot(u1);
subplot(h_axes2); plot(t, u2);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询