第二讲 MatLab图形绘制功能Final

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档