例2-1 画sin函数图像
x=0:0.01:10;
y=sin(x);
h=figure(1);
plot(x,y);
例2-2 把好几个图分块儿放一个窗口
x=(0:0.01:2)*pi;
y1=sin(x);
y2=sin(2*x);
y3=sin(3*x);
y4=sin(4*x);
a=subplot(2,2,1);plot(x,y1)
a=subplot(2,2,2);plot(x,y2)
a=subplot(2,2,3);plot(x,y3)
a=subplot(2,2,4);plot(x,y4)
获取图形数据
[x,y]=ginput %函数获得任意个数的输入点,直到用户按下回车键为止并返回这n个点的相应的坐标向量x、y
[x,y]=ginput(n) %获得n个数
直角坐标系作图
plot(x,y)
plot(x,y,s) %s是格式
plot(x1,y1,s1,x2,y2,s2..) %绘制数据x1-y1,x2-y2,..对应的图形
%s的部分格式
%b 蓝色 c 青色 g 绿色 k 黑色 m 洋红色 r 红色 w 白色 y 黄色
%- 实线 :点线 -.点划线 --虚线
%. 点号 o 圆圈号 x 叉号 + 十字形号 * 星号 s 方块号 d 钻石形号
%p 五角星号 h 六角星号 V 顶点向下的三角形 < 顶点向左的三角形 > 右 ^ 上
例2-3 画图
x=[1.2 7.0 3.6 5.0 8.0];
y=[4.1 5.2 6.3 9.0 15.0];
z=[11.1 15.2 16.3 19.0 25.0];
a=subplot(1,2,1);plot(x,y)
a=subplot(1,2,2);plot3(x,y,z)
对数坐标系作图
loglog(x,y), loglog(x,y,s), loglog(x1,y1,s1,x2,y2,s2,..), %横纵坐标都取对数
semilogx(x,y), semilogx(x,y), semilogx(x1,y1,s1,x2,y2,s2,..), %横坐标取对数
semilogy(x,y), semilogy(x,y), semilogy(x1,y1,s1,x2,y2,s2,..) %纵坐标取对数
极坐标系作图
polar(theta,r), polar(theta,r,s), polar(theta1,r1,s1,theta2,r2,s2,..)
polar(theta,r,s)
例2-4 画图
a=2; %参数a取2
theta=(0:0.01:4)*pi; %计算角度
r=a*cos(3*theta); %计算极径
subplot(1,2,1);polar(theta,r); %在极坐标系中绘制三叶玫瑰线
[x,y]=pol2cart(theta,r); %将极坐标数据转化为直角坐标系数据
subplot(1,2,2);plot(x,y); %在直角坐标系中绘制三叶玫瑰线
axis equal; %坐标轴纵横比例尺相同
%双轴图
[haxes,hline1,hline2]=plotyy(x1,y1,x2,y2,m1,m2)
%其它图形
bar(x) %绘制矩阵x的条形图
bar(y,x) %y横坐标,x纵坐标,条形图
bar3(x) %三维条形图
bar3(y,x)
pie(x) %饼图
pie3(x) %三维饼图
stem(x) %针状图
stem3(x)
quiver(x,y,u,v) %绘制向量场图,点(x,y)处的箭头由分量(u,v)定义
quiver(x,y,u,v,s) %s是线型
feather(u,v) %绘制向量沿横轴等距离分布的羽状图,箭头大小由(u,v)定义
compass(u,v) %绘制箭头发自圆心的罗盘图
rose(thera) %绘制玫瑰花图,theta为每个花瓣的角度(弧度)
contour(Z,n) %绘制矩阵Z的等值线图,n为等值水平数
contourf(Z,n) %等值区域是被填充的
area(x,y) %绘制数据(x,y)的面积图,用法与plot类似,但数值y区域被填充
hist(y) %绘制关于数据y的柱状图
gplot(A,C) %绘制数据(A,C)的拓扑图,A为邻接矩阵,C为A的相配矩阵
stairs(x) %x的阶梯图
errorbar(x,y,1) %y对x的误差条形图,长度为1的误差条对称地分布在y的上下方
comet(x,y) %y对x的彗星图
例2-5 画图
theta=10*rand(1,50); %确定50个随机数theta
Z=peaks; %确定Z为峰值函数peaks
x=0:0.01:2*pi; y=sin(x);
t=randn(1000,1);
subplot(2,2,1),rose(theta);
subplot(2,2,2),area(x,y);
subplot(2,2,3),contour(Z);
subplot(2,2,4),hist(t);
平面作图
fplot(fun,lims,tol,n,p1,p2,..)
ezplot(fun,lims,fig)
lims是作图区间 lims=[xmin xmax ymin ymax]
tol是相对误差,有默认值
n是作图点数
p1,p2是函数fun的参数
clf %清除当前图形
subplot(2,2,1),fplot('sin(x)',[0 2*pi]);
subplot(2,2,2),fplot('sin(x)',[pi 3*pi]);
subplot(2,2,3),fplot('sin(x)',pi*[-1 1 -1 1]);
subplot(2,2,4),fplot('sin(x)',[0 2*pi],1e-3);
三维作图
[x y]=meshgrid(x,y) %m个数据的x,n个数据的y,生成m*n个数据的新矩阵
mesh(x,y,z) %三维网格表面
surf(x,y,z) %三维曲面
meshc(x,y,z) %三维网格表面,在网线图下添加等值线
surfc(x,y,z)
meshz(x,y,z) %三维网格表面,在网线图下添加零平面
例2-7 三维作图
x=-5:0.1:5; y=-4:0.1:4;
[x,y]=meshgrid(x,y);
z=0.5*x.^3+y.^2;
subplot(2,2,1);mesh(x,y,z);
subplot(2,2,2);surf(x,y,z);
subplot(2,2,3);meshc(x,y,z);
subplot(2,2,4);surfc(x,y,z);
cla %清除当前坐标轴
clf %清除当前坐标轴
axis(lims) %坐标轴范围
grid on %增加网格线
grid off %删除
legend(str1,str2,..,k) %在原来的图上,增加图例
legend off %删除
title()
xlabel()
ylabel()
zlabel()
text(x,y,str) %在位置(x,y)处增加文本str
gtext(str) %在鼠标位置处增加文本str
hold on
hold off
例2-8 画图,将两个函数图显示在一张图上
x=(0:0.01:2)*pi;y1=sin(x);y2=cos(x);
plot(x,y1,'r-'); %红色实线
hold on; %保持曲线,以便画下一个曲线
plot(x,y2,'b--'); %蓝色虚线
grid on; %加网格
legend('正弦曲线','余弦曲线',1); %设置不同曲线的图例
xlabel('hengzhou');
ylabel('zongzhou');
%声音与动画
sound(y), sound(y,f) %将向量y传送至扬声器,f为采样频率
例2-9
%以20000Hz制作并播放余弦曲线形式的声音
x=cos(linspace(0,10000,20000));
sound(x);
动画的实现
M=getframe,M=getframe(p),M=getframe(p,r) %getframe 获得当前图形窗口中的画面 p 对象句柄 r图形对象矩形区域
% r=[left bottom width height] 矩形区域左下角的横纵坐标、矩形区域的宽度和高度
movie(M,k) %movie 播放动画 M已有动画帧矩阵 k重复播放次数
例2-10
s=0.2;x1=0;
nframes=50; %动画总帧数
for k=1:nframes
x1=x1+s; %确定画图时横坐标终止值
x=0:0.01:x1;
y=sin(x);
plot(x,y);
axis([0 2*pi -1 1]) %坐标轴
grid off %加网格线
M(k)=getframe; %将当前图形存入矩阵
end
movie(M,3) %重复3次播放动画M
图形用户界面
Menu Editor %设置菜单的
position %窗口位置,前后两个数值分别为窗口矩阵左下角和右上角的横纵坐标
Name %窗口标题栏对应的字符串
NumberTitle %on显示窗口编号 off不显示
Resize %窗口大小是否可调整
Visible %窗口是否可见
例2-11 gui窗口,创建菜单
%gui窗口,创建菜单
h=figure;
set(h,'Position',[100 150 500 400],'Menubar','figure','Name','可视化编程','NumberTitle','off')
h1=uimenu(h,'Label','输入一般资料');
h11=uimenu(h1,'Label','输入基础资料');
例2-12
dlg_title='输入参数对话框'; %设置对话框标题
num_lines=1; %参数输入行数
p1='输入参数1';
p2='输入参数2';
p3='输入参数3';
p={p1,p2,p3}; %参数输入说明
def={'1.2','2.5','4.1'}; %设置输入参数默认值
g=inputdlg(p,dlg_title,num_lines,def); %设置对话框并获取数据g
F1=str2num(char(g(1))); %将细胞数据g(1)转化为数值F1
F2=str2num(char(g(2)));
F3=str2num(char(g(3)));
F=[F1,F2,F3] %显示获得的数据
例2-13 控件
%控件
h=figure;
set(h,'Position',[100 150 500 400],'Menubar','figure','Name','可视化编程','NumberTitle','off')
h1=uicontrol(h,'Style','text','Position',[100 150 80 20],'String','基础长度');
例2-14
h=figure;
set(h,'Position',[100 150 500 400],'Menubar','figure','Name','可视化编程','NumberTitle','off')
axes('Position',[0.1 0.7 0.8 0.2])
x=0:0.01:2*pi;
y=sin(x);
plot(x,y);
图形用户界面的可视化编程,步骤:
1.进入gui界面
2.添加图形对象
3.修改菜单属性
4.修改图形对象属性
5.编辑回调函数或命令
6.另存为图形文件
7.打开图形文件,对有关对象属性进行修改
% H=findobj(图形对象句柄,属性,属性值)
% 图形对象句柄可以是gcbf(获得具有返回控制的当前图形句柄)、gcbo(获得具有返回控制的当前对象句柄)、
% gco(获得当前对象句柄)、gcf(获得当前图形句柄)、gca(获得当前坐标轴对象句柄)
%p=get(Hf_1,'position') 返回具有句柄Hf_1图形窗口的位置向量
可视化编程(gui)
%步骤(按照步骤一步一步来!)
gui部分
%1. 进行可视化编程
%1.1 在MATLAB命令窗口输入guide
%1.2 新建空白gui窗口
%1.3 把左边面板中的‘Edit Text’拖进来
%双击该按钮,在新的对话框中‘Style’后的选择框中选择‘edit’
%在‘Tag’后的编辑框输入‘edit1’,‘String’后输入空白
%1.4 把左边面板中的‘Edit Text’拖进来(第二个)
%双击该按钮,在新的对话框中‘Style’后的选择框中选择‘edit’
%在‘Tag’后的编辑框输入‘edit2’,‘String’后输入空白
%1.5 拖入‘Radio Button’,双击该按钮
%‘string’后输入‘确认’,‘style’后选择‘radiobutton’
%‘callback’后选择‘c02_15’
%1.6 把左边面板中的‘Edit Text’拖进来(第三个)
%双击该按钮,在新的对话框中‘Style’后的选择框中选择‘edit’
%在‘Tag’后的编辑框输入‘edit3’,‘String’后输入空白
c02_15.m文件部分
%获得计算数据
H1=findobj(gcbf,'tag','edit1'); %找H1
n1=get(H1,'string'); %获字符串n1
N1=eval(n1); %将字符串转化为数值
H2=findobj(gcbf,'tag','edit2');
n2=get(H2,'string');
N2=eval(n2);
%进行数学计算
N3=N1*N2;
%界面显示数学计算结果
H3=findobj(gcbf,'tag','edit3');
n3=num2str(N3);
set(H3,'string',n3); %将字符串赋予控件
实现可视化应用程序
%回到可视化编程界面
%文件另存为c02_16
运行gui文件,成功~