MATLAB学习笔记-Part 5.MATLAB图形处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33547243/article/details/81230616

MATLAB学习笔记

Chapter 5


图形制作概述

MATLAB中进行图形处理时,通常采用下面的步骤

1.准备绘图数据
2.选定绘图窗口和绘图区域
3.调用绘图函数命令
4.设置图形格式
5.输出所绘制的图形

举例如下:

% 在[0, 2]内做出正弦函数的图形
x = 0:0.012;
y = sin(x);
plot(x, y)

小结:二维绘图最简步骤
.确定x向量
.确定y = f(x)
.用plot(x, y)绘图

图形窗口

·什么是图形窗口?
图形窗口是独立的窗口,系统自动将图形绘制在图形窗口上

·图形窗口的创建和控制

.单个图形窗口的创建与控制
调用函数:figure
调用格式:h = figure, h = figure(n)
说明:该命令创建单个图形窗口
注意事项:
.若没有打开图形窗口时执行绘图命令,将自动创建一个图形窗口
.若执行绘图命令前已经打开几个图形窗口,则绘图命令把图形输出到当前窗口中、并把这个窗口原来的图形覆盖
.n为图形窗口的编号
相关命令:
.get(n):获得第n个图形窗口的有关属性
.set(n):设置第n个图形窗口的有关属性
代码示例:

x = 0:0.01:10;
y = sin(x);
h = figure(1);
plot(x, y)
set(1, 'name', 'hello')
set(h, 'visible', on)
set(h, 'visible', 'off')
get(h)
get(1)

.多个图形窗口的创建与控制
调用函数:subplot
调用格式:h = subplot(m, n, p)
说明:该命令将图形窗口分割为多个字图窗口
注意事项:
.若执行命令前已经存在某一子图,则该命令将新图形输出到相应子图,并把原来的子图覆盖
.m为子图行数,n为子图列数
.p为子图窗口序号
代码示例:

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)
b = subplot(2, 2, 2);
plot(x, y2)
c = subplot(2, 2, 3);
plot(x, y3)
d = subplot(2, 2, 4);
plot(x, y4)

相关命令:
get(n):获得第n个图形窗口的有关属性
set(n):设置第n个图形窗口的有关属性

二维平面图形的绘制

·基本图形函数
函数命令:plot
调用格式:
plot(x)
plot(x, y)
plot(x, y1, x, y2, …)
Note:plot是绘制二维图形的最基本函数,针对向量或者矩阵的列来绘制曲线的,在使用plot函数之前,必须首先定义好曲线上每一点的x及y坐标
.plot(x)
当x为一向量时,以x元素的值为纵坐标,x的序号为横坐标绘制曲线
当x为一m*n的实数矩阵时,以x序号为横坐标,按列绘制每列元素值相对于其序号的曲线,最终绘制出n条曲线
.plot(x, y)
若x, y为同维向量,则以x元素为横坐标值,y元素为纵坐标值绘制曲线
若x是向量,y是有一维与x元素数量相等的矩阵,则以x为共同横坐标,按列绘制y每列元素值,曲线数为y的另一维的元素数
若x, y是同维矩阵,则以x, y对应列元素为横、纵坐标分别绘制曲线,曲线数为矩阵的列数
.plot(x, y1, x, y2, …)
若x, y均为同维向量时,以公共的x元素作为横坐标值,以y1, y2, …元素为纵坐标值绘制多条曲线

其他二维图形绘制函数

·直方图
函数命令:bar, barh
调用格式:
bar(y)
bar(y, width)
bar(x, y)
bar(x, y, width)
bar(~, ‘grouped’)
bar(~, ‘stack’)
说明:该命令生成一组直方图,可视化结果为m组,每组n个垂直柱(y可以为一组向量,或是m*n矩阵)

·面积图
函数命令:area
调用格式:area(x, y)
说明:该命令绘制(x, y)的面积图,参考plot(x, y)

·饼图
函数命令:pie
调用格式:
pie(x)
pie(x, explode)
pie(…, labels)
说明:该命令绘制饼图

不同坐标系中绘图

·直角坐标系中绘图
函数命令:plot等绘图函数

·对数坐标系中绘图
函数命令:loglog, semilogx, semilogy
调用格式:
loglog(x, y)
semilogx(x, y)
semilogy(x, y)
重要提示:log10(0)在数学上没有意义,但MATLAB并不给出错误提示信息
代码示例:

clf
x = [1.2, 7.0, 3.6, 5.0, 8.0];
y = [4.1, 5.2, 6.3, 9.0, 15.0];
subplot(1, 3, 1)
loglog(x, y)
subplot(1, 3, 2)
semilogx(x, y)
subplot(1, 3, 3)
semilogy(x, y)

·极坐标系中绘图
函数命令:polar
调用格式:polar(theta, r)
重要提示:可使用命令[x, y] = pol2cart(theta, r)将极坐标系的数据点对(theta, r)转化为直角坐标系的数据点对[x, y],命令plot(x, y)和命令polar(theta, r)的效果相同
代码示例:

clf
a = 2;
theta = (0:0.01:4)*pi;
r = a*cos(3*theta);
subplot(1, 2, 1)
plot(tehta, r)
[x, y] = pol2cart(theta, r);
subplot(1, 2, 2)
plot(x, y)
axis equal

·双轴图
函数命令:plotyy
调用格式:[haxes, hline1, hline2] = plotyy(x1, y1, x2, y2, m1, m2)
代码示例:

clf
t = 0:900;
A = 1000;
a = 0.005;
b = 0.005;
z1 = A*exp(-a*t);
z2 = sin(b*t);
[haxes, hline, hline2] = plotyy(t, z1, t, z2, 'semilogy', 'plot');

·符号表达式绘图
函数命令:fplot, ezplot
调用格式:
fplot(fun, lims, tol, n, p1, p2, …)
其中,fun指的是待绘制的函数,lims指的是作图区间, tol指的是相对误差,默认为2e-3,
n指的是作图点数,默认值n = 1
p1, p2, …函数的参数,默认没有参数
代码示例:

fplot('sin(x)', [0, 2*pi], 1e-3)

ezplot(fun, lims, fig)
其中,fun指的是待绘制的函数,lims是作图区间, fig是图形窗口句柄
重要提示:ezplot可作为隐函数与多元函数的图形,默认作图区间为[-2*pi, 2*pi]
代码示例:

explot('u^2 - v^2 - 1', [-2, 3, -3, 2])

三维立体图形

·三维曲线绘图基本绘图函数
函数命令:plot3
调用格式:plot3(x1, y1, z1, x2, y2, z2, …)
注:使用方法与plot相似

三维绘图最简步骤:
.确定x向量
.确定y = f(x), z = g(x)
.用plot3(x, y, z)绘图

三维曲线绘图其他绘图函数
函数命令:bar3, pie3, stem3, ezplot3等
注:使用方法与二维相似

三维曲面绘图函数
函数命令:mesh, surf, meshc, surfc, meshz, meshgrid

调用格式 用途
mesh(x, y, z) 绘制数据的三维网格曲面
surf(x, y, z) 绘制数据的三维曲面
meshc(x, y, z) 绘制数据的三维网格表面,并添加等值线
surfc(x, y, z) 绘制数据的三维曲面,并在图下添加等值线
meshz(x, y, z) 绘制三维网格表面,并在图下添加零平面
[x, y] = meshgrid(x, y) 根据已有m个数据的向量x和n个数据的向量y分别生成有m*n个数据的新矩阵x和y

通常在确定向量x, y的基础上,使用命令meshgrid生成新的矩阵数据[x, y],再输入函数 z = f(x, y),最后使用mesh等命令生成三维网格、使用surf等命令生成三维曲面

小结:三维曲面绘图最简步骤
.确定向量x, y
.使用命令meshgrid生成新的矩阵数据
.z = f(x, y)
.用mesh等命令生成三维网格
.用surf等命令生成三维曲面

观察点设置
函数命令:view
调用格式:view(azimuth, elevation)
说明:方位角azimuth是观察点和坐标原点连线在 x-y 平面内的投影和 y 轴负方向的夹角,仰角elevation是观察点与坐标原点的连线和 x-y 平面的夹角
默认:2D(0, 90), 3D(-37.5, 30)

色图处理
函数命令:colormap, brighten
调用格式:colormap(map), brighten(S)
说明:colormap将当前图形色图设置为系统预定义的map格式,brighten改变当前推行窗口色图的亮度
代码示例:

clf;
x = -5:0.1:5;
y = -4:0.1:4;
[X, Y] = meshgrid(x, y);
Z = 0.5*X.^3 + y.^2;
mesh(X, Y, Z)
colormap(hsv)
brighten(0.60)

声音和动画

·声音的实现
函数命令:sound
调用格式:sound(y), sound(y, f)
说明:将向量y传送至扬声器,f为采样频率
例题:以20KHz的制作并播放余弦曲线形式的声音
代码如下:

x = cos(linspace(0, 10000, 20000));
sound(x)

其他的函数命令:wavplay, wavread, wavrecord, wavwrite, chirp, beep

·动画的实现
函数命令:getframe, movie
调用格式:M = getframe, movie(M, k)
代码示例:

% 制作正弦曲线在[0, 2*pi]从起点到终点的延伸情况曲线,并播放三次
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)

至此,基本完成了MATLAB编程基础所学内容的整理,感谢孙蓬老师!

猜你喜欢

转载自blog.csdn.net/qq_33547243/article/details/81230616
今日推荐