回 帖 发 新 帖 刷新版面

主题:MATLAB应用大全



                                           MATLAB应用大全

                                           赵海滨  等编著

















                                        北 京 清 华 大 学 出 版 社

内 容 简 介
本书由浅入深,全面、系统地介绍了MATLAB编程和开发的方方面面。书中的每章都提供了大量有针对性的实例,供读者实战演练。另外,为了帮助读者更高效、直观地学习,本书每章重点内容都专门录制了对应的教学视频。这些视频和本书所有的实例文件一起收录于配书DVD光盘中。
全书共23章,分为7篇。基础篇介绍了MATLAB基础、数组和矩阵分析、字符串分析;科学运算篇介绍了MATLAB数据分析、积分和微分运算、概率和数理统计、符号计算;数据可视化篇介绍了二维和三维数据的可视化;编程篇介绍了MATLAB基本编程、程序调试和编程技巧;仿真篇介绍了Simulink基本知识、Simulink建模和S-函数;高级应用篇介绍了GUI编程开发、GUIDE工具建立GUI界面、文件夹管理和文件I/O操作、MATLAB编译器;工具箱与接口编程篇介绍了信号处理、小波分析、图像处理、神经网络4个工具箱,最后还介绍了MATLAB与Word和Excel的接口技术。
无论是对于MATLAB的初学者,还是有一定基础的高级用户,本书都是一本难得的参考书。本书非常适合使用MATLAB进行编程和开发的本科生、研究生及教师,也适合广大科研和工程技术人员研读。

本书封面贴有清华大学出版社防伪标签,无标签者不得销售。
版权所有,侵权必究。侵权举报电话:010-62782989  13701121933


图书在版编目(CIP)数据

MATLAB应用大全 / 赵海滨等编著. —北京:清华大学出版社,2012.3
ISBN 978-7-302-27616-6

Ⅰ. ①M…  Ⅱ. ①赵…  Ⅲ. ①Matlab软件  Ⅳ.  ①TP317

中国版本图书馆CIP数据核字(2011)第271712号

责任编辑:夏兆彦
责任校对:徐俊伟
责任印制:

出版发行:清华大学出版社    
网    址:http://www.tup.com.cn, http://www.wqbook.com
地    址:北京清华大学学研大厦A座        邮    编:100084
社 总 机:010-62770175                邮    购:010-62786544
投稿与读者服务:010-62776969,c-service@tup.tsinghua.edu.cn
质量反馈:010-62772015,zhiliang@tup.tsinghua.edu.cn
印 刷 者:
装 订 者:肖  米
经    销:全国新华书店
开    本:185mm×260mm        印    张:46.75          字    数:1170千字
          (附光盘1张)
版    次:2012年3月第1版                          印    次:2012年3月第1次印刷
印    数:1~5000
定    价:25.00元
产品编号:043740-01

[b]当当地址:http://product.dangdang.com/product.aspx?product_id=22704305[/b]

回复列表 (共38个回复)

31 楼


2.4  高维插值
在MATLAB中,采用函数interp3()进行三维插值,该函数的调用格式如下。
    vi=interp3(x, y, z, v, xi, yi, zi):该函数通过初始数据 产生插值函数 ,然后对数据 进行插值,返回值为vi。
    vi=interp3(x, y, z, v, xi, yi, zi, method):该函数中method为可以采用的插值方法,共有4种,分别是'nearest'、'linear'、'spline'和'cubic',其中线性插值为默认的插值方法。
【例5-16】 利用函数interp3()进行三维插值,代码如下:

clear all;
[x,y,z,v]=flow(10);
[xi,yi,zi]=meshgrid(.1:.25:10,-3:.25:3,-3:.25:3);        %创建网格数据
vi = interp3(x,y,z,v,xi,yi,zi);                             % vi为25*40*25
slice(xi,yi,zi,vi,[6 9.5],2,[-2 .2]);
shading flat
程序运行后,输出结果如图5.10所示。在程序中,利用函数flow()产生数据 、 和 ,均为 的三维矩阵。利用函数meshgrid()产生网格数据, 、 和 均为 的三维矩阵。利用函数interp3()进行三维数据插值,采用系统默认的线性插值方法。


[img]http://www.tu265.com/di-687fd8a68ac4df1774c2d87d875bfe14.png[/img]

32 楼

在MATLAB中,进行高维插值的函数还有interpn(),可以进行 维插值,可以采用的插值方法,共有4种,分别是'nearest'、'linear'、'spline'和'cubic',其中线性插值为默认的插值方法。此外,在进行 维插值时,需要利用函数ndgrid()产生 维空间上的网格。

33 楼


5.3  函数的极限
极限理论是微积分学的理论基础。在MATLAB中,采用函数limit()计算数列或函数的极限,可以非常方便地进行极限运算。下面首先介绍极限的基本概念,然后介绍利用函数limit()求函数的极限。
5.3.1  极限的概念
数列的极限定义为:设 是数列, 是常数,若对于任意给定的正数 (无论它多么小),总存在正整数 ,使得当 时,都有
 
则称数列 以 为极限,记作 。有极限的数列称为收敛数列。
【例5-17】 对于数列 ,当 时的变化趋势,代码如下:

clear all;
n=1:300;
x=n./(n+2);        %数列
figure;
plot(n,x);        %显示数列

运行程序后,输出结果如图5.11所示。由图5.11可知,随着 的增大,数列 与1非常接近。因此,可以得到结论:
 
【例5-18】 求当 时,函数 的变化趋势和极限,代码如下:

clear all;
x=linspace(-pi,pi,40);
y=sin(x)./x;            %数列
figure;
plot(x,y,'r--')            %显示数列

运行程序后,输出的结果如图5.12所示。由图5.12可知,当 时,函数 与1无限接近。由此可知:

[img]http://www.tu265.com/di-22e605164f6c40cbe307a36ec6669ec3.png[/img]

34 楼


【例5-19】 求当 时,函数 的变化趋势和极限,代码如下:

clear all;
x=1:200;
y=(1+1./x).^x;        %创建数列
figure;
plot(x,y)            %显示数列

运行程序后,输出的结果如图5.13所示。由图5.13可知,当 时,函数 无限接近于常数 ( )。

[img]http://www.tu265.com/di-fac613204ce34b8426fa3a431a6b3380.png[/img]

35 楼

5.3.2  求极限的函数
当 时,函数 以 为极限,称为函数 当 时以 为左极限,记作 。当 时,函数 以 为极限,称为函数 当 时以 为右极限,记作 。左极限和右极限统称为单侧极限。极限 存在且等于 的充分必要条件是左极限 与右极限 都存在且相等。
在MATLAB中,采用函数limit()求某个函数的极限,该函数的调用格式为:
    y=limit(f):当 时,该函数对函数 求极限,返回值为求得的极限。系统默认设置为 。
    y=limit(f, x, a)或y=limit(f, a):当 趋近于常数 时,即 ,该函数对函数 求极限,返回值为求得的极限。
    y=limit(f, x, a, 'left'):当 从左侧趋近于常数 时,即 ,该函数对函数 求极限,返回值为求得的左极限。
    y=limit(f, x, a, 'right'):当 右侧趋近于常数 时,即 ,该函数对函数 求极限,返回值为求得的右极限。
利用函数limit()求极限时,不同的调用方式对应的数学运算如表5.2所示。
表5.2  求极限函数
数 学 运 算    MATLAB函数调用格式
 
limit( f ) 
 
limit(f, x, a)或limit(f,a) 
 (左极限)
limit(f, x, a, 'left') 
 (右极限)
limit(f, x, a, 'rightt') 
【例5-20】 求极限 ,代码如下:

clear all;
syms x;
f=(3*x^2-1)/(3*x^2-2*x+3);        %函数
y=limit(f,x,1)                    %x趋近于1时的极限

运行程序后,输出结果如下:

y =
1/2

程序运行后,该函数在 时,极限为1/2。
【例5-21】 求极限 ,代码如下:

clear all;
syms x;
f=x/(x-1)-2/(x^2-1);        %函数
y=limit(f,x,1)                %x趋近于1时的极限

运行程序后,输出结果如下:

y =
3/2

程序运行后,该函数在 时,其极限为3/2。
【例5-22】 求极限 ,代码如下:

clear all;
syms x;
f=sin(sin(x))/x;        %函数
y=limit(f,x,0)            %x趋近于0时的极限

运行程序后,输出结果如下:

y =
1

程序运行后,该函数在 时,其极限为1。
【例5-23】 求极限 ,代码如下:

clear all;
syms x;
f=(1+2/x)^(2*x);        %函数
y=limit(f,x,inf)        %x趋近于无穷大时的极限

运行程序后,输出结果如下:

y =
exp(4)

该程序运行后,函数在 时,极限为 。
【例5-24】 求极限 ,代码如下:

clear all;
syms x;
f=((x^x)^x);                %函数
y=limit(f,x,0,'right')        %x趋近于0+时的极限

运行程序后,输出结果如下:

y =
1

该程序运行后,函数在 时,极限为1。
5.4  本 章 小 结
本章对一些基本的数据分析进行了详细的介绍,主要包括多项式、插值和函数的极限。多项式的操作方法,主要包括多项式的建立、多项式求值、多项式乘法和除法、多项式求导、多项式展开和拟合等。插值函数,主要包括一维插值、二维插值、样条插值和高维插值等内容。利用MATLAB进行数据分析非常灵活,需要读者熟练掌握。

36 楼


第10章  三维数据可视化
在MATLAB中,三维图形包括三维曲线、三维网格图和三维曲面图,分别采用函数plot3()、函数mesh()和surf()进行绘制。本章还将介绍一些特殊的三维图形绘制,重点讲解三维图形的视角、色彩和光照等控制工具,以及图形的打印和输出等。下面分别进行      介绍。
10.1  创建三维图形
在实际的工程计算中,经常需要将结果表示成三维图形,下面介绍如何利用MATLAB创建三维图形,包括三维曲线图、三维曲面图和特殊三维图形,以及非网格数据三维绘              图等。
10.1.1  三维图形概述
MATLAB语言提供了三维绘图功能,这些功能与二维图形的绘制有很多相似之处,例如曲线的属性设置完全相同。最常用的三维绘图包括三维曲线图、三维网格图和三维曲面图等。完整的三维绘图流程,通常包括绘图的数据,设置图形窗口,图形的视角、颜色和光照等效果,以及坐标轴和图形标注的设置等。
【例10-1】 三维绘图流程,代码如下:

clear all;
x=-10:0.1:10;                       %绘图数据
y=-10:0.1:10;
[X,Y]=meshgrid(x,y);
z=X.^2+Y.^2;
figure;                             %图形窗口
surf(x,y,z);                        %绘图
view([50 70])                       %视角
colormap('cool');                   %颜色
shading interp;
light('Position',[1 0.4 0.4]);    %光照
axis square;                        %坐标轴设置
xlabel('x');                        %图形标注
ylabel('y');
zlabel('z');

程序运行后,输出结果如图10.1所示。

[img]http://www.tu265.com/di-ca2899e7ed9832f51188babe9f88012d.png[/img]

37 楼


10.1.2  三维曲线图
在MATLAB中,利用函数plot3()绘制三维曲线图,该函数的调用格式如下。
    plot3(x, y, z):该函数绘制三维曲线,参数 、 和 是有相同的维数的向量。
    plot3(X, Y, Z):该函数中参数X、Y和Z为具有相同维数的矩阵,将参数X、Y和Z的每一列绘制一条曲线,同时绘制多条曲线。
    plot3(X, Y, Z, s):该函数和二维绘图函数plot()类似,可以设置曲线的线型和颜色,以及数据点的标记等。
【例10-2】 利用函数plot3()绘制三维曲线图,代码如下:

clear all;
t=linspace(0,20*pi, 500);
x=t.*sin(t);
y=t.*cos(t);
z=t;
figure;
plot3(x, y, z);                %绘制三维曲线
xlabel('x');
ylabel('y');
zlabel('z');

程序运行后,输出结果如图10.2所示。通过函数plot3()绘制三维曲线,当参数为同维的矩阵时,同时绘制多条三维曲线,其中曲线的条数等于矩阵列数。

[img]http://www.tu265.com/di-df64c8f700af597bd5c8b84773e88c84.png[/img]

38 楼


10.1.3  三维曲面图
在MATLAB中,提供了一个peaks()函数,可产生一个凹凸有致的曲面,包含了3个局部极大点及三个局部极小点。该函数的调用格式如下。
    peaks:该函数绘制三维曲面,默认绘制的矩阵大小为49×49。
    peaks(n):该函数绘制三维曲面,三维曲面数据的大小为n×n。
    z=peaks:该函数产生默认大小为 × 的矩阵z,不绘制三维曲面。
    z=peaks(x, y):该函数计算输入参数为x和y的方程的值,不绘制三维曲面。
    [x, y, z]=peaks:该函数产生3个矩阵x、y和z,大小都为49×49,不绘制三维             曲面。
    [x, y, z]=peaks(n):该函数产生3个矩阵x、y和z,大小都为n×n,不绘制三维            曲面。
利用函数peaks()产生的矩阵,可以采用函数surf()、函数mesh()、函数contour()和   pcolor()等绘制三维曲面图。该函数在以后会经常用到,读者需要熟练掌握。
【例10-3】 利用函数peaks()绘制三维曲面图,代码如下:

clear all;
[a,b,c]=peaks(20);
peaks

程序运行后,在MATLAB的命令行窗口输出结果如下:

z =  3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... 
   - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... 
   - 1/3*exp(-(x+1).^2 - y.^2)

程序运行后,在MATLAB的命令行窗口,输出该函数的表达式,以及该函数的三维图形,如图10.3所示。该函数是一个凹凸有致的三维曲面,有3个局部极大点及3个局部极小点。
1.函数meshgrid()
在MATLAB中,采用函数meshgrid()产生平面区域内的网格坐标矩阵,该函数的调用格式如下。
    [X,Y]=meshgrid(x,y):该函数产生由向量 和 产生的二维网格,输出值X和Y为矩阵。矩阵X的每一行都是向量 ,行数等于向量 的元素的个数,矩阵Y的每一列都是向量 ,列数等于向量 的元素的个数。
    [X, Y]=meshgrid(x):该函数相当于程序[X, Y]=meshgrid(x, x)。
    [X, Y, Z]=meshgrid(x, y, z):该函数向量 、 和 产生三维网格。
【例10-4】 利用函数meshgrid()产生矩形网格,代码如下:

clear all;
x=-2*pi:2*pi;
y=-2*pi:2*pi;
[X,Y]=meshgrid(x,y);            %产生矩形网格
figure;
plot(X,Y,'o');                    %绘制网格数据

程序运行后,输出结果如图10.4所示。

[img]http://www.tu265.com/di-c4e298a3d9a8cb4b2625e5bedac54d80.png[/img]

我来回复

您尚未登录,请登录后再回复。点此登录或注册