Matlab数据处理与分析.docx
《Matlab数据处理与分析.docx》由会员分享,可在线阅读,更多相关《Matlab数据处理与分析.docx(69页珍藏版)》请在冰豆网上搜索。
Matlab数据处理与分析
前言
MATLAB一直是国际科学界应用和影响最广泛的软件工具,有着Mathematica和Maple无法比拟的优势和适用面。
它不仅仅是一款数学软件,应用于微积分、概率统计、复变函数、线性变换、解方程、最优化、插值及数据显示等方面,也应用于模糊逻辑、小波分析、神经网络、图像处理、模式识别方面求解。
另外数字信息处理、系统仿真、自动化、工程力学、信息与系统、模拟电路等方面都广泛的应用。
使用好的数据处理方法和相应的软件工具对实验数据进行处理是大学理工数各专业学生应具备的基本技能,对于相关课程的学习也非常重要。
MATLABT优点众多,本书只是重点讨论MATLAB在数据处理方面的应用。
具体包括以下方面的内容:
1.MATLAB安装及界面使用详解;
2.数组与矩阵及其运算;
3.MATLAB常用数值计算;
4.代数方程与最优化;
5.符号计算;
6.插值与拟合;
7.数据与函数的显示。
在阅读过程中,要求上机执行书中的相关程序代码,熟练书的相关知识,要求勤查MATLAB自带的帮助系统,才能起到很好的学习效果。
第一章
MATLAB的安装和界面使用
本章详细讲述MATLABR2007a的安装和界面的使用。
.1.MATLAB安装
首先双“setup.exe”之后,出现如图1-1的“WelcometotheMathWorksInstaller”窗口,然后点击“Next”按钮。
1-1
进入图1-2的“LicenseInformation”窗口,在Name框和Organization输入
1-2
相应名称(自行命名)。
然后安装目录下的“serial.txt”文件,将序列号复制到“PleaseenteryourPersonalLicensePassword(PLP)”框中,然后点击“Next”按钮。
待少许时间,防火墙会提示是否允许访问网络的提示框,如瑞星防火墙会出如下图1-3的对话框。
1-3
选择“总是允许”,并按“确定”。
进入“MathWorksAccount”对话框如图1-4。
图1-4
选择“InstalltheproductversionsfrommyDVDorlocaldiskonly”选项按钮,进入“Licenseagreement”对话框,然后选择“Yes”按钮。
图1-5
进入“InstallationType”对话框,如图1-6所示,然后选择“Typical”按钮,点击“Next”。
图1-6
然后进入“”对话框,如图1-7所示。
可以更改安装目录,也呆保持默认。
如果系统盘的空间不空,则应更改安装目录,以保证机器的正确运行。
图1-7
在接下来的步骤中,皆选择“Next”按钮,即可。
.2.MATLAB的启动与界面详解
在开始菜单中,选择:
开始\程序\MATLAB\R2007a\matlabR2007a,如图1-8所示。
图1-8
然后进入MATLAB应用程序主界面,如图1-9所示。
最上方是标题栏,显示版本信息:
MATLAB7.4.0(R2007a):
再往下的一栏是菜单栏:
图1-9
接下来是工具栏:
其中
是指定当前工作路径,如果要向某文件夹中读取或保存相关内容,则通过点击
,然后选择该文件夹作为当前工作路径。
然后点击左侧的
,则会出现CurrentDirectory对话框如图1-10所示,用来显示当前路径中的文件信息。
它和Workspace处于同一具标签对话框中。
图1-10
右侧是CommandWindow窗口,如图1-11所示,是用来输入MATLAB指令的。
一打开MATLAB则在CommandWindow中会出现“>>”,此符号表示MATLAB软件已准备好了,正在待命令的输入。
如输入指令:
A=[123]
然后回车,则出现运算结果:
A=
123
此指令表示输入一个一行三列的矩阵(即行向量),并将此矩阵(向量)保存在变量A中。
关于矩阵及向量向量,在第二章中详细解释。
图1-11
指令执行完毕之后,会发现左下方的CommandHistory窗口中会多出现一行刚刚输入的指令。
如图1-12所示,CommandHistory是用来保存输入过的命令,方便以后查找或再次使用。
同时Workspace标签属性页也会多出一行。
如图1-12所示,CurrentDirectory是用来显示可用的各种变量的。
图中说是说明了刚才得到的变量A,它的值、最小、最大元素及类型等信息。
图1-12图1-13
在
上任一处右击,然后在弹出菜单上选择需要查看的相关信息。
如图1-14所示。
如果需要用到以前的命令,可以在CommandHistory窗口中查到,可按日期查找,可以选择单条历史命令,也可以同时选择多条历史记录。
然后右选择复制,将其粘贴到CommandWindow窗口中执行。
也可将其作为文本复制到Word文档或txt文档中。
如果双击历史记录中的命令,则系统会立即执行被双击的命令一次。
如果CommandHistory窗口中一些命令不需要,可以一条或多条记录,然后按“Delete”键,将之删除。
图1-14图1-15
.3.MATLAB的帮助详解
点击主菜单中的Hellp\MATLABHelp或直接按F1,进入MATLAB自带的帮助界面,如图1-16所示。
点击各个节点可以查看相关帮助信息。
帮助文件里有详细的解释和丰富的实例。
图1-16
由帮助界面,可以看以MATLAB的强大功能,它可以与主流的软件开发工具进行混合编程开发。
与Java和.Net无缝对接。
只有勤查帮助或网上查找资料才能起到事半功倍的学习效果。
第二章数组与矩阵的概念及其运算
在MATLAB中预定了一些符号,用于特定的含义,以下是一些预定义的符号:
表2-1
符号
意义
符号
意义
ans
默认变量名
pi
圆周率
eps
机器可识别的最小的数
flops
浮点运算之数
inf
无穷大
NaN
非数
i或j
虚数单位
realmax
最大的实数
realmin
最小的实数
intmax
最大的整数
其余的请参看联机帮助系统。
.1.数组与矩阵的概念
MATLAB中,数组和矩阵本身是没有区别的,在内存中是一样的。
只是针对不同的运算方式,将其为数组运算或矩阵运算。
如果运算是按元素对应进行的,则称为数组运算。
如果按线性代数学中的方式运算,则称为矩阵运算,如例2-1
例2-1数组与矩阵的区别演示。
设有矩阵A和B如下:
以数组方式运算方式:
,其中Inf表示无穷大(非数)
MATLAB指令:
A=[-11;02]%输入的矩阵保存在变量A中
A=
-11
02
B=[-11;02]%输入的矩阵保存在变量B中
B=
-11
02
A.*B%以数组方式相乘,
ans=
-12
08
A./B%以数组方式相除
ans=
-12
Inf2
几点说明:
1、MATLAB中,矩阵(数组)按元素逐个输入的方法,就是将所有元素放在一对方括号内,行与行之间以分号“;”隔开,每一行中各元素之间以空格或逗号隔开。
详细说明参看2.2节内容;
2、MATLAB指令输入时,必需在英文状态下输入,否则会出错;
3、如果一条指令以分号“;”作为结束符,则运算结果并不显示在CommandWindow窗口中,但保存在Workspace中。
如果没有分号,则将结果显示在CommandWindow中;
4、百分号“%”表示注释,从%开始到行未为方便人阅读所加的注释,不是指令中的一部分;
5、注意数组方式运算有一个小黑点“.”;
6、本书中凡MATLAB指令都用加粗字体;
7、MATLAB中变量无需要声明就可直接使用,根据赋值符号“=”右则表达式的类型来自动确定左侧的类型。
如A=[-11;02],A表示一个2阶矩阵。
以矩阵方式运算(即按线性代数中的矩阵运算):
当然,矩阵的加法和减法两种方式都是一样的,
MATLAB指令:
A*B%矩阵方式相乘
ans=
-15
-311
A/B%矩阵方式相除
ans=
-1.00001.5000
-3.00003.5000
注意:
如本书中后面内容只提及矩阵,只有当涉及到数组方式的运算时才将矩阵称为数组。
.2.矩阵的创建和操作
在MATLAB中,有两种创建矩阵的方法。
一是直接按元素逐个输入的方法,如例2-1所示;另一种就是使用MATLAB相关的指令来创建。
一、直接输入元素创建
直接按元素逐个输入来创建矩阵,就是将所有元素放在一对方括号内,行与行之间以分号“;”隔开,每一行中各元素之间以空格或逗号隔开。
只有一行的矩阵称为行向量(也称为一维数组),只有一列的矩阵称为列向量。
此方法可创建向量和矩阵。
例2-2直接输入创建向量和矩阵演示。
vr=[1234]%创建行向量,元素之间以空格隔开
vr=
1234
vc=[1;2;3]%创建列向量,行之间以分号隔开
vc=
1
2
3
m23=[123;456]%创建一个2×3行的矩阵
m23=
123
456
二、MATLAB指令创建
在MATLAB中指令,更多时候也称为函数。
可以使用MATLAB内置的函数来创建矩阵(数组)。
以下以举例的方式说明。
例2-3通过MATLAB指令创建向量和矩阵演示:
1、指定起点:
步长:
终点。
如果不指定步长,则将步长默认为1,最后一个元素不一定是终点,这取决于区间长度是否为步长的整数倍。
该方法用于创建向量。
v=0:
0.2:
1%以0为起点、1为终点、步长为0.2创建一个数组(行向量)
v=
00.20000.40000.60000.80001.0000
v=0:
pi%起点0、终点pi、默认步长1。
最后一个元素不是终点。
v=
0123
2、linspace(起点,终点,元素个数),等分间隔。
该方法用于创建向量。
v=linspace(0,pi,3)
v=
01.57083.1416
v=linspace(0,3,5)
v=
00.75001.50002.25003.0000
3.特殊矩阵的创建。
创建特殊矩阵的常用函数:
rand、magic、zeros、ones和eye等,需要深入研究请参看联机帮助。
rand('state',0)%把均匀分布伪随机发生器置为0状态
v=rand(2,3)%产生一个2×3的随机矩阵
v=
0.95010.60680.8913
0.23110.48600.7621
m=magic(3)%产生一个3阶魔方矩阵
m=
816
357
492
zeros(3)%产生一个3阶零矩阵
ans=
000
000
000
zeros(2,3)%产生一个2×3的零矩阵
ans=
000
000
eye(2,3)%产生一个2×3的矩阵,左边2×2是一个单位矩阵
ans=
100
010
eye(3)%产生一个3阶单位矩阵
ans=
100
010
001
ones(2,3)%产生一个元素全为1的2×3阶矩阵
ans=
111
111
另外还有其它特殊的矩阵创建函数,如有需要请参看帮助。
.3.矩阵的访问操作
以下以举例的方式说明矩阵的访问操作如下:
例2-4矩阵访问举例演示:
v=[1234567];%生成一个行向量
v(3)%查询第三个元素的值
ans=
3
v(3)=23%将第三个元素的值设为23
v=
12234567
v([126])=[111216]%将下标为1、2、6的三元素的值设为11、12、16
v=
11122345167
v(4:
end)%查询第4至最后元素之间的所有元素
ans=
45167
v(1:
5)%查询第1至5个元素
ans=
11122345
m=[123;456]%产生一个新矩阵m
m=
123
456
m(2,3)%查询第2行第3列位置上的元素
ans=
6
m(:
2)%查询第2列元素上所有行的元素
ans=
2
5
m(2,:
)%查询第2行上所有列的元素
ans=
456
m(2,[12])%查询第2行上的第1、2列位置上的元素
ans=
45
m(1,[23])=[8899]%将第1行上的第2、3列上的元素分别设为88和99
m=
18899
456
m(2,2)=518%将第2行2列位置上的元素设为518
m=
18899
45186
.4.矩阵的基本运算操作
矩阵的常用基本运算有加、减、乘、除、求逆等。
数组方式和矩阵方式的运算符只差了一个小圆点,注意观察实例代码。
1、加法和减法
数组方式和矩阵方式都是一样的,就是直接将对应位置上的元素相加。
如果是一个数和矩阵相加,则矩阵的每一个元素都加上这个数。
例2-4矩阵加法操作演示:
A=magic(3)%产生一个魔方矩阵
A=
816
357
492
B=ones(3)%产生一个元素全为1的矩阵
B=
111
111
111
A+B%矩阵的加法
ans=
927
468
5103
2+A%数与矩阵的加法
ans=
1038
579
6114
2、乘法、除法与逆运算
数组方式的乘法和除法是依元素对应相乘;矩阵方式的乘法则是按线性代数中的方法进行,矩阵的除是按线性代数中的取逆进行。
左除:
A/B,相当于A*B-1,右除:
A\B,相当于A-1*B。
逆运算按线性代数中的方法进行。
例2-5矩阵乘、除操作演示
A=magic(3);
B=ones(3);
A.*B%数组方式的乘法
ans=
816
357
492
A*B%矩阵方式的乘法
ans=
151515
151515
151515
M=[1,2;21]
M=
12
21
B=[1-1;10]
B=
1-1
10
A./B%维数不匹配,将会出错
Errorusing==>rdivide
Matrixdimensionsmustagree.
M./B%数组方式的除法
ans=
1-2
2Inf
B./M%数据方式的除法
ans=
1.0000-0.5000
0.50000
M/B%矩阵方式的除法
ans=
-23
-13
M*inv(B)%以矩阵方式运算,M乘以B的逆矩阵
ans=
-23
-13
inv(B)%计算B的逆
ans=
01
-11
3、矩阵作为函数参数
如果矩阵(数组)作为标准数学函数的参数,则对每一个元素都作同一函数计算。
如V是一个行向量,R=sin(V)的运算结果R也是一个行向量,且R是的每一个元素都是由V中对应元素值求正弦值得到。
例2-6矩阵作为函数参数演示
v=[0pi/2pi3*pi/22*pi]%产生一个有4个元素的行向量
v=
01.57083.14164.71246.2832
r=sin(v)%计算结果也是一个向量,和v的元素个相同
r=
01.00000.0000-1.0000-0.0000
4、常用的矩阵操作函数
常用的矩阵操作函数如左右置换、上下置换、旋转,以下举例说明。
例2-7矩阵常用操作演示
A=magic(3)
A=
816
357
492
flipud(A)%矩阵上下翻转
ans=
492
357
816
fliplr(A)%矩阵左右翻转
ans=
618
753
294
rot90(A)%矩阵旋转90度
ans=
672
159
834
.5.非数、关系运算与逻辑操作
1、非数NaN
当表达式中如果分母出现零,或类似于
的表达式运算时都会产生非数NaN,即Notanumber。
NaN具有如下性质:
◆NaN参与的运算结果也是NaN;
◆非数没有大小的概念,因此不能将两非数去比较大小。
非数真实的记录了运算结果,即数学中的无限变换趋,以下举例说明。
例2-8非数使用演示
log(0)%即相当于自变量趋向0时的极限为负无穷大
ans=
-Inf
t=1/0%相当于分母从右侧趋向趋向0时的极限为无穷大
t=
Inf
cos(t)%对非数计算余弦结果为非数
ans=
NaN
非数要用于数据可视化中,如将图中某一指定部分镂空,将用到非数,详见第七章。
2、关系运算与逻辑运算
关系操作符有:
==或eq(A,B),~=或ne,<或lt,>或gt,<=或le,>=或ge,以及&或and、|或or和~或nor等具体函数要求自行查阅帮助系统。
另外有关函数如下:
all,any,isqual,iempty,isfinite,isinf,isnan,isnumeric,isreal,isprime,isspace,isstr,ischar,isstudent,isunix,isvms,find.列表如下,详情请参看联机帮助。
关系运算符如下表2-2
关系运算符
功能
关系运算符
功能
<
小于
>=
大于或等于
<=
小于或等于
==
等于
>
大于
~=
不等于
例2-9关系运算与逻辑矩阵使用演示
A=[159;347;268]
A=
159
347
268
B=magic(3)
B=
816
357
492
C=gt(A,B)%比较大小Greaterthan
C=
011
000
001
whosC%查看C的详细信息
NameSizeBytesClassAttributes
C3x39logical
D=and(A,B)%求和运算
D=
111
111
111
B>3%B中元素值大于1的位置对应1否则对应0,结果是一个逻辑矩阵
ans=
101
011
110
B(find(B>3))%将B中元素值大于3的元素列出来
ans=
8
4
5
9
6
7
[r,c]=find(B>3)%元素值大于3的行号组成的数组r,列号组成数组c
r=
1
3
2
3
1
2
c=
1
1
2
2
3
3
B.*(B>3)%B中不大于3位置上的元素设为零
ans=
806
057
490
例2-10绘制[0,3pi]之间的曲线,并截去pi至2pi之间的曲线。
x=linspace(0,3*pi);%自变量数组
y=sin(x);%函数数组
x1=(x2*pi);%逻辑数组
y1=x1.*y;%截断数组
plot(x,y1);%绘图
.6.小结、综合举例与练习
例2-11综合举例,利用关系运算求近似极限,修补图形缺口。
t=-2*pi:
pi/10:
2*pi;%自变量数组
y=sin(t)./t;%函数值数组
tt=t+(t==0)*eps;%修正后的自变量数组,元素值为零时,以最小机器数代替
yy=sin(tt)./tt;%修正后的函数值数组
subplot(1,2,1),plot(t,y),axis([-7,7,-0.5,1.2]),%绘制没有修正的图形
subplot(1,2,2),plot(tt,yy),axis([-7,7,-0.5,1.2])%绘制修正后的图形
图2-1
第三章矩阵的基本特征参数
本章简要说明反映矩阵特征参数的一些量,如行列式、秩、条件数、范数、特征值与特征向量等问题。
.1.矩阵的基本参数
以一下说明有矩阵信息的基本参数
1、元素个数、行列数及其最大者、元素最大最小元素
例3-1矩阵基本信息查询演示
M=magic(3)
M=
816
357
492
numel(A)%统计矩阵的元素个数
ans=
9
size(M)%计算矩阵的行列数
ans=
33
length(A)%计算行数与列数中的最大者
ans=
3
max(M(:
))%求出矩阵中所有元素中的最大者
ans=
9
min(M(:
))%求出矩阵中所有元素中的最小者
ans=
1
.2.矩阵的行列式、秩与范数
计算行列式、秩及范数的指令分别是det、rank和norm
例3-2矩阵行列式、秩与范数使用演示
A=magic(3);
det(A)%求A的行列式
ans=
-360
rank(A)%计算矩阵的秩
ans=
3
A=[569;351;861]
A=
569
351
861
binf=norm(A,'inf')%计算无穷范数
binf=
20
b2=norm(A,2)%计算2范数
b2=
15.4215
.3.条件数、矩阵的稳定性
条件数是反映AX=b中,如果A或b发生细微变化,解变化的剧烈程度。
如果条件数很大说明是病态方程方程,不稳定方程。
例3-3矩阵条件数与稳定性演示
A=[234;119;12-6]
A=
234
119
12-6
con2=cond(A)%计算2-范式条件数
con2=
575.8240
con1=condest(A)%计算1-范式条件数
con1=
817
例3-4求解线性方程组:
A=[234;119;12-6]%系数矩阵
A=
234
119
12-6
b=[1;-7;9]%常数列
b=
1
-7
9
x=inv(A)*b%逆矩阵的方法求解
x=
1
1
-1
A\b%左除方法求解
ans=