第二讲 MatLab图形绘制功能Final
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二讲 MatLab图形绘制功能
教学目的:熟练掌握二维曲线作图;了解隐函数绘图;掌握三维曲线和三维曲面作图的方法和技巧;了解MATLAB图形修饰处理方法;学会一些简单动画制作手段.
教学重点:二维曲线的作图, 极坐标和参数作图; 三维曲线和曲面作图.
教学难点:点运算在作图中的应用; 曲线和曲面作图的差别; 隐函数作图.通过解说,演示以及举例子克服难点难关.
一、二维平面图形
表1基本绘图函数
hold on 命令用于在已画好的图形上添加新的图形.
plot是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x及y 坐标.下例可画出一条正弦曲线:
x=0:0.001:10; % 0到10的1000个点的x坐标
y=sin(x); % 对应的y坐标
plot(x,y); % 绘图
Y=sin(10*x);plot(x,y,'r:',x,Y,'b') % 同时画两个函数
若要改变颜色,在坐标对后面加上相关字串即可:
x=0:0.01:10; plot(x,sin(x),'r')
若要同时改变颜色及图线型态(Line style),也是在坐标对后面加上相关字串即可:plot(x,sin(x),'r*')
用axis([xmin,xmax,ymin,ymax])函数来调整图轴的范围:
axis([0,6,-1.5,1])
MATLAB 也可对图形加上各种注解与处理:
xlabel('x 轴'); % x 轴注解
ylabel('y 轴'); % y 轴注解
title('余弦函数'); % 图形标题
legend('y = cos(x)'); % 图形注解
gtext('y = cos(x)'); % 图形注解 ,用鼠标定位注解位置
grid on; % 显示格线
fplot 的指令可以用来自动的画一个已定义的函数分布图,而无须产生绘图所需要的一组数据作为变数.其语法为fplot('fun',[xmin xmax ymin ymax]),其中 fun 为一已定义的函数名称,例如 sin , cos 等等;而 xmin , xmax , ymin , ymax 则是设定绘图横轴及纵轴的下限及上限.
以下的例子是将一函数 f(x)=sin(x)/x 在-20 >> fplot('sin(x)./x',[-20 20 -0.4 1.2]) 例 画椭圆12 322 22=+y x . a = [0:pi/50:2*pi]'; %角度 π20- X = cos(a)*3; %参数方程 Y = sin(a)*2; plot(X,Y);xlabel('x'), ylabel('y');title('椭圆') 图形窗口的分割一般用命令subplot: subplot(2,2,1); subplot(2,3,4); MATLAB还有其他各种二维绘图函数,以适合不同的应用,详见下表. 当资料点数量不多时,长条图是很适合的表示方式:close all; % 关闭所有的图形视窗 x=1:10; y=rand(size(x)); bar(x,y); 如果已知资料的误差量,就可用errorbar来表示.下例以单位标准差来做资料的误差量: x = linspace(0,2*pi,30); y = sin(x); e = std(y)*ones(size(x)); errorbar(x,y,e) 对于变化剧烈的函数,可用fplot来进行较精确的绘图,会对剧烈变化处进行较密集的取样,如下例: fplot('sin(1/x)', [0.02 0.2]); % [0.02 0.2]是绘图范围 若要产生极坐标图形,可用polar: theta=linspace(0, 2*pi); r=cos(4*theta); polar(theta, r); 例在广告设计、教育教学和一些大学学报的封面图案中,经常会用到美丽的极坐标图形,如钟形线到心形线的美丽变化图案(见图1),即是极坐标方程: ρθθ =cos(5)+cos() n 中n从-5到5变化过程. 图1:在一个窗口画所有的图形 程序exam1.m %画心形图到钟形图的动画 clf,axis off, t=[0:0.01:pi]';n=[-5:5]; %转化为直角坐标 x=cos(5.*t).*cos(t)*ones(1,length(n))+cos(t).*cos(t)*n; y=cos(5.*t).*sin(t)*ones(1,length(n))+cos(t).*sin(t)*n; plot(x,y) %画多条曲线 hold on for n=5:-1:-5 r=cos(5.*t)*ones(1,length(n))+cos(t)*n; comet(r.*cos(t),r.*sin(t),0.1) %动画重新画(按打点的次序) end 程序exam2.m clf,clear, axis off %初始的设置 t=linspace(0,pi,100); %t为向量 for n=5:-1:-5 %一次编程画多个图形 r=cos(5*t)+n*cos(t); %心形线的方程 polar(t,r) %画极坐标图形,可以转化成直角坐标 title(strcat('r=cos(5*t)+',num2str(n),'*cos(t)')) %实现串联字符串,动态变化数值hold off