Matlab应用5-1共32页文档

合集下载

matlab使用案例

matlab使用案例

matlab使用案例Matlab是一种数学计算软件,用于科学计算和工程领域的数学分析、可视化和编程任务。

Matlab的广泛应用包括控制系统设计、图像和视频处理、信号处理、机器学习、计算机视觉等等。

以下是Matlab具体应用案例。

1. 数据可视化和统计分析Matlab可以用来进行数据可视化和统计分析。

例如,可以用Matlab制作一份销售数据和趋势报告,该报告包含一些图表和数据汇总。

2. 信号处理使用Matlab,可以进行多种信号处理操作,如过滤、调制和解调,傅里叶变换和滤波器设计。

例如,可以用Matlab对电子信号进行滤波处理,去除噪音。

3. 机器学习Matlab提供了许多工具箱,如神经网络工具箱、统计和机器学习工具箱等,可以帮助用户构建各种机器学习模型。

例如,可以使用Matlab训练神经网络,来进行图像、语音和自然语言处理等任务。

4. 控制系统设计Matlab提供了广泛的工具箱,用于控制系统设计和仿真。

例如,可以使用Matlab创建控制系统模型,以检查和测试控制算法。

5. 信号处理和图像处理的应用Matlab有许多内置的函数和工具箱,用于信号处理和图像处理,如使用DIP Toolbox、Image Processing Toolbox、Bioinformatics Toolbox等。

例如,可以使用Matlab提取图像中的边缘、使用MATLAB中的特征函数对图像进行特征提取、并对图像进行分类。

6. 数学建模Matlab可用于数学建模计算。

例如,使用Matlab对不同的数学模型进行建模和求解,以进行不同领域的计算。

总结来说,Matlab在各种领域的应用正在逐渐增加。

从数据可视化到科学建模、从信号处理到机器学习,Matlab为科学工作者、工程师和程序员提供了广泛的程序库、工具箱和工具,可大大简化复杂问题的解决方案。

matlab基础及其应用

matlab基础及其应用

matlab基础及其应用MATLAB Basic and Its Application1、IntroductionMATLAB(Matrix Laboratory),是由The MathWorks, Inc.公司出版的商业数学软件包,它在矩阵计算、科学数据可视化、计算机程序设计语言等方面具有很强的功能,它的强大和易用及跨平台功能被国外广泛应用,是科学计算、信号处理、量子力学、系统监控、逆向工程、机器学习等领域的标准软件。

2、FeaturesMATLAB的优势主要有以下几点:(1) MATLAB是一个完整的交互式环境,可以实现图形用户界面、精确的数值计算、数据可视化以及高级编程。

(2) MATLAB可以用来操作大型矩阵、数组,支持向量化语言,利用它可以进行矩阵的运算,而不用写复杂的程序,其代码是可读性非常强的,计算速度快,省去了很多复杂的计算时间。

(3) MATLAB适用于数据分析、机器学习、计算机视觉等多种领域,是一款功能强大的工具箱,为用户提供了丰富的函数库来实现不同的计算任务。

(4) MATLAB可以与其他计算机语言进行交互,可以调用C、C++,java或其他语言进行实现,也可以生成可执行文件。

3、ApplicationMATLAB的应用非常广泛,它能帮助用户实现以下任务:(1) 用来创建算法:MATLAB是一种强大的算法开发工具,可以使用MATLAB语言和面向对象的功能快速创建精确的算法。

(2) 用来实现系统仿真:MATLAB可以快速模拟复杂系统,绘制多种图形,更容易理解系统的行为。

(3) 用来实现信号处理:MATLAB可以对连续信号和数字信号进行处理,支持函数库、信号处理工具箱和语音处理工具箱。

(4) 用来实现机器学习:MATLAB可以实现机器学习算法,用来构建复杂的模型和算法,包括预测和分类,以及用来处理大量数据。

(5) 用来实现数据可视化:MATLAB可以实现高级数据可视化,用来更好地理解和探索数据,而不需要进行复杂的程序编写。

《MATLAB应用》课件

《MATLAB应用》课件

控制语句和函数
学习MATLAB的控制流程语句 和函数的定义和使用,以及 如何编写可重复使用的代码。
图形化编程
图形化用户界面 (GUI) 的设 计
探索如何使用MATLAB创建交互式 的图形用户界面,让程序更加友 好和可视化。
图形绘制
学习如何使用MATLAB绘制各种类 型的图形,如线图、散点图和柱 状图。
信号处理
连续时间信号分析
使用MATLAB的信号处理工具箱 对连续时间信号进行采样、滤 波和频谱分析。
离散时间信号分析
学习如何使用MATLAB处理离散 时间信号,如时序分析和数字 滤波器设计。
信号滤波器设计
探索MATLAB中各种信号滤波器 的设计方法和应用。
数学建模
1 非线性建模
2 数据拟合
3 方程的求解
优化在MATLAB中的应用
探索将优化算法应用于MATLAB中 的不同领域,如工程设计和经济 分析。
实例演示
1
图像处理
2
学习如何使用MATLAB进行图像处理任务,
如图像滤波、增强和分割。
3
音频处理
演示如何使用MATLAB对音频信号进行处 理和分析,包括滤波、降噪和特征提取。
机器学习应用
探索MATLAB在机器学习领域的应用,包 括分类、回归和聚类分析。
通过MATLAB的优化算法对 非线性系统进行建模和参 数估计。
学习如何使用MATLAB对实 际数据进行拟合,以找到 最佳的数学模型。
了解如何使用MATLAB求解 各种数学方程,包括代数 方程和微分方程。
仿真和优化
系统仿真
使用MATLAB进行系统级仿真,包 括建模、仿真和结果分析。
优化算法
学习MATLAB中常用的优化算法, 用于解决各种复杂的优化问题。

matlab应用实例

matlab应用实例

matlab应用实例
MATLAB是一种用于科学计算和数据可视化的强大软件工具。

它被广泛应用于各种学科领域,如数学、工程、生物学、物理学和经济学等。

下面是一些MATLAB 应用实例的介绍。

一、信号处理
MATLAB可以用于数字信号处理,包括噪声滤波、频谱分析、数字滤波器设计、数字信号处理等。

使用MATLAB进行信号处理的步骤包括加载数据、数据预处理、应用信号处理算法、分析结果并可视化。

二、图像处理
MATLAB可以用于图像处理,包括图像增强、图像分割、图像识别、图像重建等。

使用MATLAB进行图像处理的步骤包括加载图像、数据预处理、应用图像处理算法、分析结果并可视化。

三、机器学习
MATLAB可以用于机器学习,包括分类、回归、聚类、降维等。

使用MATLAB 进行机器学习的步骤包括准备数据、选择合适的机器学习算法、训练模型、评估
模型性能、使用模型进行预测。

四、数值计算
MATLAB可以用于数值计算,包括求解微分方程、求解线性代数方程组、数值优化等。

使用MATLAB进行数值计算的步骤包括定义数学模型、选择合适的算法、求解数学模型、分析结果并可视化。

以上是MATLAB的一些应用实例,不同领域的应用还有很多,MATLAB的强大功能可以帮助各个领域的研究者更高效地完成研究任务。

MATLAB基础知识及应用

MATLAB基础知识及应用

MATLAB基础知识及应用引言MATLAB是一种强大且广泛使用的数学软件,它可以帮助我们进行各种数学计算、数据分析和可视化等工作。

本文将介绍MATLAB的基础知识以及一些常用的应用。

一、MATLAB的安装和基本操作首先,让我们先来了解一下MATLAB的安装和基本操作。

在安装MATLAB 之前,我们需要从官方网站下载安装程序,并按照提示进行安装。

安装完成后,我们可以通过启动MATLAB来打开软件。

当MATLAB打开后,我们会看到一个交互式界面,这是MATLAB的命令窗口。

我们可以在命令窗口中输入命令,并立即获得结果。

例如,我们可以输入"1+1",然后按下回车键,MATLAB会返回结果"2"。

此外,MATLAB还提供了一个编辑器,可用于编写和运行脚本文件。

我们可以在编辑器中编写一系列MATLAB命令,并一次性运行。

这对于复杂的计算任务非常有用。

二、MATLAB的数据类型和运算符在MATLAB中,有几种常见的数据类型,包括数字、字符、逻辑和矩阵等。

数字可以是整数或浮点数,字符是用单引号或双引号括起来的文本,逻辑值为true 或false,矩阵由行和列组成。

MATLAB提供了各种运算符,可以对这些数据类型进行操作。

例如,加法、减法、乘法和除法运算符用于数字类型,连接运算符用于字符类型,逻辑运算符用于逻辑类型,矩阵运算符用于矩阵类型。

除了基本的运算符,MATLAB还提供了许多函数和工具箱,用于更复杂的数学计算和数据分析。

例如,我们可以使用MATLAB的内置函数求解方程组、优化问题、进行统计分析等。

三、MATLAB的编程能力除了作为一个数学软件,MATLAB还是一种功能强大的编程语言。

我们可以使用MATLAB编写脚本和函数,以解决各种计算问题。

MATLAB的编程语法与其他常见的编程语言相似。

它支持条件语句(如if语句)、循环语句(如for和while循环)、函数定义等。

matlab基础及其应用

matlab基础及其应用

matlab基础及其应用MATLAB基础及其应用一、Matlab简介1、Matlab是一款非常强大的多元计算工具软件,由美国MathWorks公司研发,有Matlab R2011a、Matlab R2008b、Matlab R2007b、Matlab R2006b和Matlab R14等多个版本;2、Matlab可以实现矩阵运算、科学计算、数据处理、函数的数值求解,是数学计算和图形显示的理想工具,是实现数据分析、科学计算的快速有效的软件。

3、Matlab可以进行数值计算、数据可视化、编程开发、仿真、测控等功能,广泛应用于电子、电气、物理、化学、生物、社会统计学、遥感、机器人控制、金融数学等多个领域。

二、Matlab的基本操作1、打开MatlabWindows:双击桌面上的Matlab快捷方式,或者在开始-运行-窗口中输入matlab,可以打开Matlab软件。

2、Matlab软件界面Matlab 主界面包括:菜单栏,工具栏,命令行,编辑窗口,工作空间,绘图窗口,帮助窗口。

3、在Matlab中运行程序打开Matlab后,编写程序代码,可以在编辑窗口编辑程序代码,也可以在命令窗口编辑程序代码,然后可以在命令窗口中运行代码,程序运行完毕, Matlab会将程序运行结果显示出来。

4、Matlab中绘图Matlab图形处理功能强大,它能够进行内置图形的生成、绘制、改变、添加文字、标记等,可以用鼠标调用图形的轮廓、边框、颜色、图线宽度、图形类型等,Matlab还支持多种类型的三维图形视图,可以产生出具有真实感的图形表现。

三、Matlab的应用Matlab应用于许多领域,包括控制、信号处理、数字图像处理、物理数学建模、科学计算、仿真、光学、生物医药、信息融合、自动控制、软件应用等。

1、在数字信号处理方面,Matlab是一个强大的信号处理平台,它与机器视觉系统、声纳处理、语音处理等有着很强的结合。

2、在通信领域,Matlab是一个强大的数据分析工具,可以快速的处理、分析通信信号,并通过它的可视化功能实时观测实验结果。

MATLAB及应用完整版

MATLAB及应用完整版

第1章 Matlab概述
图1-2 选择Simple菜单命令的界面
第1章 Matlab概述
• Short History和Tall History:这两个菜单命令包含的窗 口类型和数量同默认的界面完全一致,不过排放的顺序不 同,如图1-3、1-4所示。
图1-3 选择Short History菜单命令的界面
2、MATLAB 的主要特点
➢ MATLAB 的基本单位为矩阵. ➢ MATLAB 语言以解释方式工作. ➢ 具有非常友好的人机界面。 ➢ 具有强大的作图和数据可视化功能. ➢ 具有极强的可扩展性。
3、MATLAB 的基本组成
➢ MATLAB 主程序、Simulink 动态系统仿真和 MATLAB 工具箱( Toolbox)三大部分组成。
>>变量=表达式;
命令窗口中可直 接运行MATLAB 函数,而这些函 数往往又和 MATLAB命令直 接联系。
运行函数和键入变量
• 在命令窗口的提示符“>>”下 ,可以直接 输入变量。
例:计算A=256/4-100×2+128
>> A=256/4-100*2+128 %从键盘输入,并单 击回车键
A=
• Command Windows Only:仅包含命令行窗口 (Command Window),此时MATLAB界面的外 观类似于旧版本的MATLAB。
• Simple:包含两个窗口——命令行窗口 (Command Window)和历史命令窗口 (Command History),两个窗口并列在界面中, 如图1-2所示。
4.掌握二维平面图形和三维立体图形的绘制方法,进行数据 可视化处理。理解用户图形界面程序的构造,掌握编程方 法。

线性系统理论matlab应用

线性系统理论matlab应用
从计算结果可以看出,系统能控性矩阵和能观测性矩阵的秩都 是3,为满秩,因此该系统是能控的,也是能观测的。 注:当系统的模型用sys=ss(A,B,C,D)输入以后,也就是当系统模 型用状态空间的形式表示时,我们也可以用Qc=ctrb(sys), Qo=obsv(sys)的形式求出该系统的能控性矩阵和能观测性矩阵。
例2-3 某线性连续系统的状态方程为
x Ax Bu
y Cx Du
其中
0 1 0
A
0
0
1
6 11 6
1 0 B 2 1
0 2
1 1 0 C 2 1 1
D
0 0
0 0
采用零阶保持器将其离散化,设采样周期为0.1秒。求离散化的状态 方程模型。
解 输入以下语句,其中D=zeros(2)表示,将D赋值为2×2维的全零 矩阵。
函数的作用是合并同类项,而ilaplace( )函数的作用是求取拉 普拉斯逆变换,函数det( )的作用是求方阵的行列式。
第15页/共50页
程序执行结果
这表示
(t)
2 2
et et
e2t 2 e2t
et e2t
e
t
2
e2t
2 et e2t
x(t
)
2
et
2
e2t
第16页/共50页
2.2 线性非齐次状态方程的解
第19页/共50页
语句执行的结果为
计算结果表示系统离散化后的 状态方程为
0.9991 0.0984 0.0041
0.1099 0.0047
x(k 1) 0.0246
0.9541
0.0738
x(k)
0.1959
0.0902u(k)

Matlab基础与应用

Matlab基础与应用
0.9501 0.4860 0.4565
rand(3,3)= 0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
382/859 1627/1765 583/1437
Format rat rand(3,3) = 989/1607 313/424 2131/2278
609/769 355/2014 2571/2804
例:求下列极限。 Problem 1:
syms a m x; f=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/(x+a); limit(f,x,a) ans = (1/2*a*exp(sin(a))+1/2*a-exp(tan(a))+1)/a Problem 2: syms x t; limit((1+2*t/x)^(3*x),x,inf) ans = exp(6*t)
级数求和
4. 级数(级数求和) 级数求和运算是数学中常见的一种运算。例 如: f(x)=a0+a1x+a2x2+a3x3+…+anxn 函数symsum可以用于此类对符号函数f的求和 运算。该函数的引用时,应确定级数的通项 式S,变量的变化范围a和b。该函数的引用格 式为:
symsum(s, a, b)
Plot绘图
例一:画出衰减震荡曲线
y
t
e3
sin
3t
及其包
络线
y0
t
e3
t的取值范围是
[0,4 ]
程序如下:
t=0:pi/50:4*pi; y0=exp(-t/3); y=exp(-t/3).*sin(3*t); plot(t,y,'-r',t,y0,':b',t,-y0,':b')

Matlab基础及应用

Matlab基础及应用

03
Matlab编程基础
控制流
循环结构
使用for和while循环实现重复执行代码块的功能。
条件结构
使用if-else或switch-case语句根据条件执行不同的代码块。
多分支结构
使用try-catch或if-else if-else实现多分支控制。
函数与脚本
函数定义
通过function关键字定义Matlab函数,实现特定功 能。
控制系统分析
Matlab支持对控制系统进行分析,如稳定性分析、根轨迹分析等。
控制系统设计
Matlab提供了控制系统设计函数,如pid、butter等,方便用户进 行控制系统设计。
05
Matlab与其他软件的集 成
与C/C的集成
混合编程
Matlab可以与C/C等编程语言进行 混合编程,通过Matlab的MEX函数 接口,将Matlab代码与C/C代码进 行集成,实现更高效的计算和数据处 理。
Matlab基础及应用
目录
• Matlab简介 • Matlab基础操作 • Matlab编程基础 • Matlab应用实例 • Matlab与其他软件的集成 • Matlab的未来发展与趋势
01
Matlab简介
Matlab的发展历程
1980年代初
MathWorks公司成立,开始研发Matlab的 前身。
科学计算与工程仿真
Matlab可以进行各种科学计算和工 程仿真,如流体动力学、电磁场等。
机器学习与人工智能
Matlab提供了丰富的机器学习工具 箱和函数库,支持人工智能领域的应 用。
02
Matlab基础操作
变量与数据类型
1 2 3
变量命名规则

第5章 MATLAB基本应用领域

第5章 MATLAB基本应用领域

第五章 MATLAB基本应用领域 图5.1 曲线拟合
第五章 MATLAB基本应用领域
5.1.4 矩阵求逆 det(A)函数可求得矩阵A的行列式值。inv(A)函数可求得矩
阵A的逆矩阵。从理论上说,当A为方阵且非奇异时, X=inv(A)*B等同于X=A\B,但后者计算所需的时间更短、内存 更少、误差检测特性更佳。
0
0
0
-2.4645 -17.6008i
第五章 MATLAB基本应用领域 5.1.8 奇异值分解 矩阵A的奇异值σ和相应的一对奇异矢量u,v满足:
Av=σu
ATu=σv
同样利用奇异值构成对角阵Σ,相应的奇异矢量作为列构成两 个正交阵U,V,则有
AV=UΣ ATU=VΣ 由于U和V正交,因此可得到奇异值分解: A=UΣVT
第五章 MATLAB基本应用领域 5.1.5 LU、QR分解
通过高斯对消或LU分解法,可将任意方阵表示成一个下三 角阵与一个上三角阵的乘积:A=LU,例如:
>> A=[1 2 3;4 5 6;4 2 6]; [L,U]=lu(A) L=
0.2500 -0.2500 1.0000 1.0000 0 0 1.0000 1.0000 0 U= 4.0000 5.0000 6.0000
第五章 MATLAB基本应用领域
矩阵A的p范数定义为
||
A
||
p
max x
|| Ax ||p || x ||p
一般p取1,2和∞。这也可由MATLAB的norm(A,p)函数计 算,缺省时p=2。例如:
>> A=fix(10*rand(3,2))
A=
94
28
67
>> N=[norm(A,1) norm(A) norm(A,inf)]

(完整word版)matlab应用

(完整word版)matlab应用

(完整word版)matlab应用Manipulator Description〉> l1。

m=3;>> l2。

m=1;>> l3.m=2;〉>l1.I=[0 0 0;0 0 0;0 0 0];〉> l2。

I=[0 0 0;0 0 0;0 0 0];〉〉l3.I=[0 0 0;0 0 0;0 0 0];>> l1。

r=[0 0 0];>> l2.r=[0 0 0];〉〉 l3。

r=[0 0 0];〉> l1.G=1;〉〉 l2.G=1;〉> l3.G=1 ;〉〉 l1.Jm=0;>> l2.Jm=0;〉> l3。

Jm=0;Manipulator Dynamics1.Two reachable point (-pi/2, 200, pi/2),(pi, 100, pi)>〉 tau_g=gravload(r,[—pi/2, 200, pi/2],[0;0;9.8])tau_g =0 29.4000 0。

0000〉> tau_g=gravload(r,[—pi, 100, —pi],[0;0;9。

8])1。

0e+003 *0 0。

0294 —4.90002。

〉> tau=rne(r,[-pi/2, 200, pi/2],[1 1 1],[2 2 2],[0;0;9。

8])tau =1.0e+005 *0 —0。

0046 2.5000>〉 tau=rne(r,[—pi/2, 200, pi/2],[1 1 1],[4 4 4],[0;0;9.8])tau =1.0e+005 *0.0000 -0。

0046 5。

0000>〉 tau=rne(r,[—pi/2, 200, pi/2],[1 1 1],[8 8 8],[0;0;9。

8])tau =1。

0e+006 *tau =1.0e+005 *2。

MATLAB程序设计及应用实例PPT教案学习

MATLAB程序设计及应用实例PPT教案学习
第20页/共60页
例 计算分段函数值
程序如下: x=input('请输入x的值:'); if x==10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x)); end
y
第21页/共60页
多分支if3语.多句格分支式if为语句:
if 条件1
语句组1
MATLAB程序设计及应用实例
会计学
1
5.1 MATLAB程序设计
5.1.1 M文件 5.1.2 脚本文件和函数文件 5.1.5 数据的输入输出 5.1.3 选择结构 5.1.4 循环结构 5.1.6 M文件调试 第1页/共60页
5.1.1 M文件
例 建立一个命令文件将变量a,b的值互换, 然后运行该命令文件。
5.1.5 循环结构
循环语句 for语句 while语句
循环的嵌套
第28页/共60页
5.1.5 循环结构- for语句
1. for语句
语句格式为: for 循环变量=表达式1:表达式2:表达式3
循环体语句 end
第29页/共60页
for语5句.1.更5 循一环般结的构格- f式or:语句
分析下列程序,说明运行结果及原因
a=3;b=6;
运行结果:
for i=1:3
a=7
a=7
b=b+1; i>2
if i<2
b=9
b=9
continue %当if条件满足时不再执行后面语句,跳
出本次循环。
end
a=a+2
%当i<2时不执行该语句
end
第34页/共60页

MATLAB应用详解

MATLAB应用详解

二、MATLAB的启动与退出
1、MATLAB系统的启动 (1)在桌面上双击MATLAB快捷方式图标。 (2)在开始菜单中单击MATLAB\MATLAB6.5项。 (3)在MATLAB安装目录\MATLAB6p5中双击 MATLAB快捷方式。 (4)在MATLAB安装目录\MATLAB6p5\bin\win32 中双击MATLAB.exe图标。 2、MATLAB系统的退出 (1)点击操作桌面的关闭按钮。 (2)执行操作桌面file\Exit MATLAB命令。 (3)在命令窗口中输入命令exit或quit,并回车。 (4)用快捷键Ctrl+Q。
函数文件(续)
将上述程序存为文件sgn.m,便可以将其作为普 通的MATLAB函数来使用: >>x=4/3*pi; ↙ y=3*sgn(sin(x)) ↙ 显示结果为: y= -3
五、MATLAB的常用命令

MATLAB可以通过菜单对工作着的窗口进行 操作,也可以通过键盘在命令窗口输入命令进行 操作,下面给出几个常用的通用命令。 quit 关闭MATLAB exit 关闭MATLAB clc 清除MATLAB命令窗口中的所有显示内容 clear 清除工作空间中保存的所有变量 其他命令可以在学习应用中逐步熟悉。
三、MATLAB的帮助系统 1、帮助命令 帮助命令是查询函数语法的最基本的方 法,查询信息直接显示在命令窗口。帮助命 令有help、lookfor。 ①>>help %在命令窗口直接输入help,显示主 要的在线帮助主题。 ②>>help 函数名 %显示关于某个具体函数的功 能、调用格式、及相关函数。
③>>help 帮助主题 %列出指定主题下的 函数。例如 >>help elfun %列出所有基本函数。

Matlab功能应用介绍

Matlab功能应用介绍

Matlab用法简介绪论Matlab是“Matrix Laboratory”的缩写,意为“矩阵实验室”,是当今美国很流行的科学计算软件.信息技术、计算机技术发展到今天,科学计算在各个领域得到了广泛的应用.在许多诸如控制论、时间序列分析、系统仿真、图像信号处理等方面产生了大量的矩阵及其相应的计算问题.自己去编写大量的繁复的计算程序,不仅会消耗大量的时间和精力,减缓工作进程,而且往往质量不高.美国Mathwork软件公司推出的Matlab软件就是为了给人们提供一个方便的数值计算平台而设计的.Matlab是一个交互式的系统,它的基本运算单元是不需指定维数的矩阵,按照IEEE的数值计算标准(能正确处理无穷数Inf(Infinity)、无定义数NaN(not-a-number)及其运算)进行计算.系统提供了大量的矩阵及其它运算函数,可以方便地进行一些很复杂的计算,而且运算效率极高.Matlab命令和数学中的符号、公式非常接近,可读性强,容易掌握,还可利用它所提供的编程语言进行编程完成特定的工作.除基本部分外,Matlab还根据各专门领域中的特殊需要提供了许多可选的工具箱,如应用于自动控制领域的Control System工具箱和神经网络中Neural Network工具箱等.第一节Matlab的安装及使用§1.1 Matlab的安装Matlab有各种版本,早期有Matlab 1.0 for 386的DOS版本,后来逐步发展.这里介绍的版本是Matlab 6.x for Windows.因为它使用方便,界面美观,我们选择它作为主要讲解版本.Matlab还有许多附加的部分,最常见的部分称为Simulink,是一个用作系统仿真的软件包,它可以让您定义各种部件,定义各自对某种信号的反应方式及与其它部件的连接方式.最后选择输入信号,系统会仿真运行整个模拟系统,并给出统计数据.Simulink有时是作为Matlab的一部分提供的,称为Matlab with Simulink版本.Matlab还有许多工具箱,它们是根据各个特殊领域的需要,用Matlab自身的语言编写的程序集,使用起来非常§1.2 Matlab基本用法从Windows中双击Matlab图标,会出现Matlab命令窗口(Command Window),在一段提示信息后,出现系统提示符“>>”.Matlab是一个交互系统,您可以在提示符后键入各种命令,通过上下箭头可以调出以前打入的命令,用滚动条可以查看以前的命令及其输出信息.如果对一条命令的用法有疑问的话,可以用Help菜单中的相应选项查询有关信息,也可以用help命令在命令行上查询,您可以试一下help、help help和help eig(求特征值的函数)命令.下面我们先从输入简单的矩阵开始掌握Matlab的功能.§1.2.1输入简单的矩阵输入一个小矩阵的最简单方法是用直接排列的形式.矩阵用方括号括起,元素之间用空格或逗号分隔,矩阵行与行之间用分号分开.例如输入:A=[1 2 3 ; 4 5 6 ; 7 8 0]系统会回答A =1 2 34 5 67 8 0表示系统已经接收并处理了命令,在当前工作区内建立了矩阵A.大的矩阵可以分行输入,用回车键代替分号,如:A=[ 1 2 34 5 67 8 0 ]结果和上式一样,也是A =1 2 34 5 67 8 0§1.2.2矩阵元素Matlab的矩阵元素可以是任何数值表达式.如:x=[ -1.3 sqrt(3) (1+2+3)*4/5]结果:x =-1.3000 1.7321 4.8000在括号中加注下标,可取出单独的矩阵元素.如:x(5)=abs(x(1))结果x =-1.3000 1.7321 4.8000 0 1.3000注:结果中自动产生了向量的第5个元素,中间未定义的元素自动初始为零.大的矩阵可把小的矩阵作为其元素来完成,如:A=[A; [10 11 12]]结果A =1 2 34 5 67 8 010 11 12小矩阵可用“:”从大矩阵中抽取出来,如:A=A(1:3,:);即从A中取前三行和所有的列,重新组成原来的A. (详细介绍参见第二节的相关内容)§1.2.3语句和变量Matlab的表述语句、变量的类型说明由Matlab系统解释和判断.Matlab语句通常形式为:变量=表达式或者使用其简单形式为:表达式表达式由操作符或其它特殊字符、函数和变量名组成.表达式的结果为一个矩阵,显示在屏幕上,同时保存在变量中以留用.如果变量名和“=”省略,则具有ans名(意思指回答)的变量将自动建立.例如:键入1900/81结果为:ans =23.4568需注意的问题有以下几点:●语句结束键入回车键,若语句的最后一个字符是分号,即“;”,则表明不输出当前命令的结果.●如果表达式很长,一行放不下,可以键入“…”(三个点,但前面必须有个空格,目的是避免将形如“数2 …”理解为“数2.”与“..”的连接,从而导致错误),然后回车.●变量和函数名由字母加数字组成,但最多不能超过63个字符,否则系统只承认前63个字符.●Matlab变量字母区分大小写,如A和a不是同一个变量,函数名一般使用小写字母,如inv(A)不能写成INV(A),否则系统认为未定义函数.§1.2.4 who和系统预定义变量输入who命令可检查工作空间中建立的变量,键入:who系统输出为:Your variables are:A ans x这里表明三个变量已由前面的例子产生了.但列表中列出的并不是系统全部的变量,系统还有以下内部变量:eps、pi、Inf、NaN变量eps在决定诸如矩阵的奇异性时,可作为一个容许差,容许差的初值为1.0到1.0以后计算机所能表示的下一个最大浮点数,IEEE在各种计算机、工作站和个人计算机上使用这个算法.用户可将此值置为任何其它值(包括0值).Matlab的内部函数pinc和rank以eps为缺省的容许差.变量pi是 ,它是用imag(log(-1))建立的.Inf表示无穷大.如果您想计算1/0S=1/0结果会是Warning:Divide by zeroS=Inf具有IEEE规则的机器,被零除后,并不引出出错条件或终止程序的运行,而产生一个警告信息和一个特殊值在计算方程中列出来.变量NaN表示它是个不定值.由Inf/Inf或0/0运算产生.要了解当前变量的信息请键入whos,屏幕将显示:Name Size Bytes ClassA 4x3 96 double arrayS 1x1 8 double arrayans 1x1 8 double arrayx 1x5 40 double arrayGrand total is 19 elements using 152 bytes从size及bytes项目可以看出,每一个矩阵实元素需8个字节的内存.4×3的矩阵使用96个字节,全部变量的使用内存总数为152个字节.自由空间的大小决定了系统变量的多少,如计算机上有虚拟内存的话,其可定义的变量个数会大大增加.§1.2.5数和算术表达式Matlab中数的表示方法和一般的编程语言没有区别.如:3 -99 0.00019.63972 1.6021E-20 6.02252e23在计算中使用IEEE浮点算法其舍入误差是eps.浮点数表示范围是10-308~10308.数学运算符有:+ 加- 减* 乘/ 右除\ 左除^ 幂这里1/4和4\1有相同的值都等于0.25(注意比较:1\4=4).只有在矩阵的除法时左除和右除才有区别.§1.2.6复数与矩阵在Matlab中输入复数首先应该建立复数单位:i=sqrt(-1)及j=sqrt(-1)之后复数可由下面语句给出:Z=3+4i (注意:在4与i之间不要留有任何空间!)输入复数矩阵有两个方便的方法,如:A=[1 2; 3 4] + i*[5 6; 7 8]和A=[1+5i 2+6i; 3+7i 4+8i]两式具有相等的结果.但当复数作为矩阵的元素输入时,不要留有任何空间,如1+5i,如在“+”号左右留有空格,就会被认为是两个分开的数.不过实际使用复数时并没有这么麻烦,系统有一个名为startup.m的Matlab命令文件,建立复数单位的语句也放在其中.当Matlab启动时,此文件自动执行,i和j将自动建立.§1.2.7输出格式任何Matlab语句执行结果都可在屏幕上显示,同时赋给指定的变量,没有指定变量时赋给ans.数字显示格式可由format命令来控制(Windows系统下的Matlab系统的数字显示格式可以由Option菜单中的Numerical Format菜单改变).format仅影响矩阵的显示,不影响矩阵的计算与存贮.(Matlab以双精度执行所有的运算)首先,如果矩阵元素是整数则矩阵显示就没有小数,如x=[-1 0 1],结果为:x=-1 0 1x=[4/3 1.2345e-6]在不同的输出格式下的结果为:短格式 1.3333 0.0000短格式e方式 1.3333e+000 1.234e-006长格式 1.333333333333333 0.000001234500000长格式e方式 1.333333333333333e-000 1.23450000000000e-006有理数格式4/3 1/81004516进制格式3ff5555555555555 3eb4b6231abfd271+格式+ +对于短格式,如果矩阵的最大元素比数999999999大,或者比数0.0001小,则在打印时,将加入一个普通的长度因数.如y=1.e20*x,意为x被1020乘,结果为:y=1.0e+020*1.3333 0.0000“+”格式是显示大矩阵的一种紧凑方法,“+”,“-”和空格显示正数、负数和零元素.最后format compact命令压缩显示的矩阵,以允许更多的信息显示在屏幕上.§1.2.8 Help求助命令和联机帮助Help求助命令很有用,它对Matlab大部分命令提供了联机求助信息.您可以从Help 菜单中选择相应的菜单,打开求助信息窗口查询某条命令,也可以直接用help命令.键入help得到help列表文件,键入“help 指定项目”,如:键入help eig则提供特征值函数的使用信息.键入help [显示如何使用方括号等.键入help help显示如何利用help本身的功能.还有,键入lookfor <关键字>:可以从m文件的help中查找有关的关键字.§1.2.9 退出和存入工作空间退出Matlab可键入quit或exit或选择相应的菜单.中止Matlab运行会引起工作空间中变量的丢失,因此在退出前,应键入save命令,保存工作空间中的变量以便以后使用.键入save则将所有变量作为文件存入磁盘Matlab.mat中,下次Matlab启动时,键入load将变量从Matlab.mat中重新调出.save和load后边可以跟文件名或指定的变量名,如仅有save时,则只能存入Matlab.mat 中.如save temp命令,则将当前系统中的变量存入temp.mat中去,命令格式为:save temp x 仅仅存入x变量.save temp X Y Z 则存入X、Y、Z变量.load temp可重新从temp.mat文件中提出变量,load也可读ASCII数据文件.详细语法见联机帮助.第二节向量与矩阵运算Matlab能处理数、向量和矩阵.但一个数事实上是一个1×1的矩阵,1个n维向量也不过是一个1×n或n×1的矩阵.从这个角度上来讲,Matlab处理的所有的数据都是矩阵.Matlab的矩阵处理能力是非常灵活、强大的.以下我们将从矩阵的产生、基本运算、矩阵函数等几个方面来说明.§2.1向量及矩阵的生成除了我们在上节介绍的直接列出矩阵元素的输入方法,矩阵还可以通过几种不同的方式输入到Matlab中.§2.1.1 通过语句和函数产生1. 向量的产生除了直接列出向量元素(即所谓的“穷举法”)外,最常用的用来产生相同增量的向量的方法是利用“:”算符(即所谓的“描述法”).在Matlab中,它是一个很重要的字符.如:z=1:5z =1 2 3 4 5即产生一个1~5的单位增量是1的行向量,此为默认情况.用“:”号也可以产生单位增量不等于1的行向量,语法是把增量放在起始量和结尾量的中间.如:x=0:pi/4:pi即产生一个由0~pi的行向量,单位增量是pi/4=3.1416/4=0.7854.x =0 0.7854 1.5708 2.3562 3.1416也可以产生单位增量为负数的行向量.如:y=6:-1:1y =6 5 4 3 2 12. 矩阵的产生ones(3)ans =1 1 11 1 11 1 1eye(3)ans =1 0 00 1 00 0 1除了以上产生标准矩阵的函数外,Matlab还提供了产生随机(向量)矩阵的函数rand 和randn,及产生均匀级数的函数linspace、产生对数级数的函数logspace和产生网格的函数meshgrid等等.详细使用请查阅随机文档.“: ”冒号可以用来产生简易的表格,为了产生纵向表格形式,首先用冒号“: ”产生行向量,再进行转置,计算函数值的列,然后形成有二列的矩阵.例如命令:x=(0.0:0.2:3.0)';y=exp(-x).*sin(x);[x y]产生结果为:ans =0 00.2000 0.16270.4000 0.26100.6000 0.30990.8000 0.32231.0000 0.30961.2000 0.28071.4000 0.24301.6000 0.20181.8000 0.16102.0000 0.12312.2000 0.08962.4000 0.06132.6000 0.03832.8000 0.02043.0000 0.0070§2.1.2 通过后缀为.m的命令文件产生如有文件data.m,其中包括正文:A=[ 1 2 34 5 67 8 0]则用data命令执行data.m,可以产生名为A的矩阵.§2.2 矩阵操作在Matlab中可以对矩阵进行任意操作,包括改变它的形式,取出子矩阵,扩充矩阵,旋转矩阵等.其中最重要的操作符为“:”,它的作用是取出选定的行与列.例如:A(:,:) 代表A的所有元素;试比较A(:), 将A按列的方向拉成长长的1列(向量);A(:,J) 代表A的第J列;A(J:K) 代表A(J), A(J+1), …, A(K),如同A(:)的第J到第K个元素;A(:,J:K) 代表A(:,J), A(:,J+1), …, A(:,K),如此类推.对矩阵可以进行各种各样的旋转、变形、扩充:Matlab中有内部函数fliplr ( Flip matrix in the left/right direction),它对矩阵进行左右旋转.例x = 1 2 3 fliplr(x)为 3 2 14 5 6 6 5 4同样有flipud:x = 1 4 flipud(x)为 3 62 5 2 53 6 1 4矩阵的转置用符号“' ”表示:如A=[1 2 3; 4 5 6 ; 7 8 0]那么:计算B=A'B =1 4 72 5 83 6 0符号“' ”为矩阵的转置,如果Z为复矩阵,则Z'为它的复数共轭转置,非共轭转置使用Z.' 或conj(Z')求得.reshape改变矩阵的形状,这是什么意思呢?可举一个例子来说明.A=[A;[10 11 12]]A =1 2 34 5 67 8 010 11 12则 reshape(A,2,6)ans =1 72 83 04 105 116 12可见,reshape 是将矩阵元素以列为单位进行重组,原来4×3的矩阵变为了2×6的矩阵.那么以下的语句也不难理解了,它将矩阵A 按列打开(size 函数返回矩阵A 的行数与列数).reshape(A,1,size(A,1)*size(A,2)),它等价于A(:)' .还有函数rot90,它可以将矩阵进行各种90度的旋转;tril 及triu 取出矩阵的下三角及上三角阵等.详细的用法可以在需要使用时查阅手册.第三节 矩阵的基本运算§3.1 加和减如矩阵A 和B 的维数相同,则A+B 与A-B 表示矩阵A 与B 的和与差.如果矩阵A 和B 的维数不匹配,Matlab 会给出相应的错误提示信息.如:A= B=1 2 3 1 4 74 5 6 2 5 87 8 0 3 6 0C =A+B 返回:C =2 6 106 10 1410 14 0如果运算对象是个标量(即1×1矩阵),可和其它矩阵进行加减运算.例如:x= -1 y=x-1= -20 -12 1§3.2矩阵乘法Matlab 中的矩阵乘法有通常意义上的矩阵乘法,也有Kronecker 乘法,以下分别介绍. §3.2.1 矩阵的普通乘法矩阵乘法用“ * ”符号表示,当A 矩阵列数与B 矩阵的行数相等时,二者可以进行乘法运算,否则是错误的.计算方法和线性代数中所介绍的完全相同.如:A=[1 2 ; 3 4]; B=[5 6 ; 7 8]; C=A*B ,结果为C=⎪⎪⎭⎫ ⎝⎛4321×⎪⎪⎭⎫ ⎝⎛8765=⎪⎪⎭⎫ ⎝⎛⨯+⨯⨯+⨯⨯+⨯⨯+⨯8463745382617251=⎪⎪⎭⎫ ⎝⎛50432219 即Matlab 返回:C =19 2243 50如果A 或B 是标量,则A*B 返回标量A (或B )乘上矩阵B (或A )的每一个元素所得的矩阵.§3.2.2 矩阵的Kronecker 乘法对n ×m 阶矩阵A 和p ×q 阶矩阵B ,A 和B 的Kronecher 乘法运算可定义为:⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⊗=B a B a B a B a B a B a B a B a B a B A C nm n n m m (21)2222111211 由上面的式子可以看出,Kronecker 乘积A ⊗B 表示矩阵A 的所有元素与B 之间的乘积组合而成的较大的矩阵,B ⊗A 则完全类似.A ⊗B 和B ⊗A 均为np ×mq 矩阵,但一般情况下A ⊗B ≠B ⊗A .和普通矩阵的乘法不同,Kronecker 乘法并不要求两个被乘矩阵满足任何维数匹配方面的要求.Kronecker 乘法的Matlab 命令为C=kron(A,B),例如给定两个矩阵A 和B :A = B= 则由以下命令可以求出A 和B 的Kronecker 乘积C :A=[1 2; 3 4]; B=[1 3 2; 2 4 6]; C=kron(A,B)C =1 32 2 6 42 4 6 4 8 123 9 64 12 86 12 18 8 16 24作为比较,可以计算B 和A 的Kronecker 乘积D ,可以看出C 、D 是不同的:A=[1 2; 3 4]; B=[1 3 2; 2 4 6]; D=kron(B,A)D =1 2 3 6 2 43 4 9 12 6 82 4 4 8 6 126 8 12 16 18 24§3.3 矩阵除法在Matlab 中有两种矩阵除法符号:“\”即左除和“/”即右除.如果A 矩阵是非奇异方阵,则A\B 是A 的逆矩阵乘B ,即inv(A)*B ;而B/A 是B 乘A 的逆矩阵,即B*inv(A).具体计算时可不用逆矩阵而直接计算.通常:x=A\B 就是A*x=B 的解;x=B/A 就是x*A=B 的解.当B 与A 矩阵行数相等可进行左除.如果A 是方阵,用高斯消元法分解因数.解方程:A*x(:, j)=B(:, j),式中的(:, j)表示B 矩阵的第j 列,返回的结果x 具有与B 矩阵相同的阶数,如果A 是奇异矩阵将给出警告信息.如果A 矩阵不是方阵,可由以列为基准的Householder 正交分解法分解,这种分解法可以解决在最小二乘法中的欠定方程或超定方程,结果是m ×n 的x 矩阵.m 是A 矩阵的列数,n 是B 矩阵的列数.每个矩阵的列向量最多有k 个非零元素,k 是A 的有效秩.右除B/A 可由B/A=(A'\B')'左除来实现.§3.4矩阵乘方A^P 意思是A 的P 次方.如果A 是一个方阵,P 是一个大于1的整数,则A^P 表示A的P次幂,即A自乘P次.如果P不是整数,计算涉及到特征值和特征向量的问题,如已经求得:[V,D]=eig(A),则:A^P=V*D.^P/V(注:这里的.^表示数组乘方,或点乘方,参见后面的有关介绍)如果B是方阵,a是标量,a^B就是一个按特征值与特征向量的升幂排列的B次方程阵.如果a和B都是矩阵,则a^B是错误的.§3.5 矩阵的超越函数在Matlab中解释exp(A)和sqrt(A)时曾涉及到级数运算,此运算定义在A的单个元素上.Matlab可以计算矩阵的超越函数,如矩阵指数、矩阵对数等.一个超越函数可以作为矩阵函数来解释,例如将“m”加在函数名的后边而成expm(A)和sqrtm(A),当Matlab运行时,有下列三种函数定义:expm 矩阵指数logm 矩阵对数sqrtm 矩阵开方所列各项可以加在多种m文件中或使用funm.请见应用库中sqrtm.m,1ogm.m,funm.m 文件和命令手册.§3.6数组运算数组运算由线性代数的矩阵运算符“*”、“/”、“\”、“^”前加一点来表示,即为“.*”、“./”、“.\”、“.^”.注意没有“.+”、“.-”运算.§3.6.1数组的加和减对于数组的加和减运算与矩阵运算相同,所以“+”、“-”既可被矩阵接受又可被数组接受.§3.6.2数组的乘和除数组的乘用符号.*表示,如果A与B矩阵具有相同阶数,则A.*B表示A和B单个元素之间的对应相乘.例如x=[1 2 3]; y=[ 4 5 6];计算z=x.*y结果z=4 10 18数组的左除(.\)与数组的右除(./),由读者自行举例加以体会.§3.6.3 数组乘方数组乘方用符号.^表示.例如:键入:x=[ 1 2 3]y=[ 4 5 6]则z=x.^y=[1^4 2^5 3^6]=[1 32 729](1) 如指数是个标量,例如x.^2,x同上,则:z=x.^2=[1^2 2^2 3^2]=[ 1 4 9](2) 如底是标量,例如2 .^[x y] ,x、y同上,则:z=2 .^[x y]=[2^1 2^2 2^3 2^4 2^5 2^6]=[2 4 8 16 32 64] 从此例可以看出Matlab算法的微妙特性,虽然看上去与其它乘方没什么不同,但在2和“.”之间的空格很重要,如果不这样做,解释程序会把“.”看成是2的小数点.Matlab 看到符号“^”时,就会当做矩阵的幂来运算,这种情况就会出错,因为指数矩阵不是方阵.§3.7 矩阵函数Matlab的数学能力大部分是从它的矩阵函数派生出来的,其中一部分装入Matlab本身处理中,它从外部的Matlab建立的M文件库中得到,还有一些由个别的用户为其自己的特殊的用途加进去的.其它功能函数在求助程序或命令手册中都可找到.手册中备有为Matlab提供数学基础的LINPACK和EISPACK软件包,提供了下面四种情况的分解函数或变换函数:(1)三角分解;(2)正交变换;(3) 特征值变换;(4)奇异值分解.§3.7.1三角分解最基本的分解为“LU”分解,矩阵分解为两个基本三角矩阵形成的方阵,三角矩阵有上三角矩阵和下三角矩阵.计算算法用高斯变量消去法.从lu函数中可以得到分解出的上三角与下三角矩阵,函数inv得到矩阵的逆矩阵,det 得到矩阵的行列式.解线性方程组的结果由方阵的“\”和“/”矩阵除法来得到.例如:A=[ 1 2 34 5 67 8 0]LU分解,用Matlab的多重赋值语句[L,U]=lu(A)得出注:L结果只需计算L*U即可.求逆由下式给出:x=inv(A)x =从LU的值可由下式给出:d=det(A)d =27直接由三角分解计算行列式:d=det(L)*det(U)d =27.0000为什么两种d的显示格式不一样呢? 当Matlab做det(A)运算时,所有A的元素都是整数,所以结果为整数.但是用LU分解计算d时,L、U的元素是实数,所以Matlab产生的d也是实数.例如:线性联立方程取b=[ 135]解Ax=b方程,用Matlab矩阵除得到x=A\b结果x=0.33330.33330.0000由于A=L*U,所以x也可以有以下两个式子计算:y=L\b,x=U\y.得到相同的x值,中间值y为:y =5.00000.28570.0000Matlab中与此相关的函数还有rcond、chol和rref.其基本算法与LU分解密切相关.chol 函数对正定矩阵进行Cholesky分解,产生一个上三角矩阵,以使R'*R=X.rref用具有部分主元的高斯-约当消去法产生矩阵A的化简梯形形式.虽然计算量很少,但它是很有趣的理论线性代数.为了教学的要求,也包括在Matlab中.§3.7.2正交变换“QR”分解用于矩阵的正交-三角分解.它将矩阵分解为实正交矩阵或复酉矩阵与上三角矩阵的积,对方阵和长方阵都很有用.例如A=[ 1 2 34 5 67 8 910 11 12]是一个降秩矩阵,中间列是其它二列的平均,我们对它进行QR分解:[Q,R]=qr(A)R的下三角都给出0,并且R(3,3)=0.0000,说明矩阵R与原来矩阵A都不是满秩的.下面尝试利用QR分解来求超定和降秩的线性方程组的解.例如:b=[ 1357]讨论线性方程组Ax=b,我们可以知道方程组是超定的,采用最小二乘法的最好结果是计算x=A\b.结果为:Warning: Rank deficient, rank = 2 tol = 1.4594e-014x =0.50000.1667我们得到了缺秩的警告.用QR分解法计算此方程组分二个步骤:y=Q'*bx=R\y求出的y值为xWarning: Rank deficient, rank = 2 tol = 1.4594e-014x =0.50000.1667用A*x来验证计算结果,我们会发现在允许的误差范围内结果等于b.这告诉我们虽然联立方程Ax=b是超定和降秩的,但两种求解方法的结果是一致的.显然x向量的解有无穷多个,而“QR”分解仅仅找出了其中之一.§3.7.3奇异值分解在Matlab中三重赋值语句[U,S,V]=svd(A)在奇异值分解中产生三个因数:A=U*S*V 'U矩阵和V矩阵是正交矩阵,S矩阵是对角矩阵,svd(A)函数恰好返回S的对角元素,而且就是A的奇异值(其定义为:矩阵A'*A的特征值的算术平方根).注意到A矩阵可以不是方的矩阵.奇异值分解可被其它几种函数使用,包括广义逆矩阵pinv(A)、秩rank(A)、欧几里德矩阵范数norm(A,2)和条件数cond(A).§3.7.4 特征值分解如果A是n×n矩阵,若λ满足Ax=λx,则称λ为A的特征值,x为相应的特征向量.函数eig(A)返回特征值列向量,如果A是实对称的,特征值为实数.特征值也可能为复数,例如:A=[ 0 1-1 0]eig(A)产生结果ans =0 + 1.0000i0 - 1.0000i如果还要求求出特征向量,则可以用eig(A)函数的第二个返回值得到:[x,D]=eig(A)D的对角元素是特征值.x的列是相应的特征向量,以使A*x=x*D.计算特征值的中间结果有两种形式:Hessenberg形式为hess(A),Schur形式为schur(A).schur形式用来计算矩阵的超越函数,诸如sqrtm(A)和logm(A).如果A和B是方阵,函数eig(A,B)返回一个包含一般特征值的向量来解方程Ax=λBx双赋值获得特征向量[X,D]=eig(A,B)产生特征值为对角矩阵D.满秩矩阵X的列相应于特征向量,使A*X=B*X*D,中间结果由qz(A,B)提供.§3.7.5秩Matlab计算矩阵A的秩的函数为rank(A),与秩的计算相关的函数还有:rref(A)、orth(A)、null(A)和广义逆矩阵pinv(A)等.利用rref(A),A的秩为非0行的个数.rref方法是几个定秩算法中最快的一个,但结果上并不可靠和完善.pinv(A)是基于奇异值的算法.该算法消耗时间多,但比较可靠.其它函数的详细用法可利用Help求助.第四节Matlab中的图形§4.1二维作图绘图命令plot绘制x-y坐标图;loglog命令绘制对数坐标图;semilogx和semilogy命令绘制半对数坐标图;polor命令绘制极坐标图.§4.1.1 基本形式如果y是一个向量,那么plot(y)绘制一个y中元素的线性图.假设我们希望画出y=[0., 0.48, 0.84, 1., 0.91, 6.14 ]则用命令:plot(y)它相当于命令:plot(x, y),其中x=[1,2,…,n]或x=[1;2;…;n],即向量y的下标编号, n为向量y的长度Matlab会产生一个图形窗口,显示如下图形,请注意:坐标x和y 是由计算机自动绘出的.上面的图形没有加上x轴和y轴的标注,也没有标题.用xlabel,ylabel,title命令可以加上.如果x,y是同样长度的向量,plot(x,y)命令可画出相应的x元素与y元素的x-y坐标图.例:x=0:0.05:4*pi; y=sin(x); plot(x,y)grid on, title(' y=sin( x ) 曲线图' )xlabel(' x = 0 : 0.05 : 4Pi ')结果见下图.§4.1.2 多重线在一个单线图上,绘制多重线有三种办法.第一种方法是利用plot的多变量方式绘制:plot(x1,y1,x2,y2,...,xn,yn)x1,y1,x2,y2,...,xn,yn是成对的向量,每一对x, y在图上产生如上方式的单线.多变量方式绘图是允许不同长度的向量显示在同一图形上.第二种方法也是利用plot绘制,但加上hold on/off命令的配合:plot(x1,y1)hold onplot(x2,y2)hold off第三种方法还是利用plot绘制,但代入矩阵:如果plot用于两个变量plot(x,y),并且x,y是矩阵,则有以下情况:(1)如果y是矩阵,x是向量,plot(x,y)用不同的画线形式绘出y的行或列及相应的x 向量,y的行或列的方向与x向量元素的值选择是相同的.(2)如果x是矩阵,y是向量,则除了x向量的线族及相应的y向量外,以上的规则也适用.(3)如果x,y是同样大小的矩阵,plot(x,y)绘制x的列及y相应的列.还有其它一些情况,请参见Matlab的帮助系统.§4.1.3 线型和颜色的控制如果不指定划线方式和颜色,Matlab会自动为您选择点的表示方式及颜色.您也可以用不同的符号指定不同的曲线绘制方式.例如:plot(x,y,'*') 用'*'作为点绘制的图形.plot(x1,y1,':',x2,y2,'+') 用':'画第一条线,用'+'画第二条线.如果你的计算机系统不支持彩色显示,Matlab将把颜色符号解释为线型符号,用不同的线型表示不同的颜色.颜色与线型也可以一起给出,即同时指定曲线的颜色和线型.例如:t=-3.14:0.2:3.14;x=sin(t); y=cos(t);§4.1.4对数图、极坐标图及条形图loglog、semilogx、semilogy和polar的用法和plot相似.这些命令允许数据在不同的graph paper上绘制,例如不同的坐标系统.先介绍的fplot是扩展来的可用于符号作图的函数.●fplot(fname,lims) 绘制fname指定的函数的图形.●polar( theta, rho) 使用相角theta 为极坐标形式绘图,相应半径为rho,其次可使用grid命令画出极坐标网格.●loglog 用log10-log10标度绘图.●semilogx 用半对数坐标绘图,x轴是log10,y是线性的.●semilogy 用半对数坐标绘图,y轴是log10,x是线性的.●bar(x) 显示x向量元素的条形图,bar不接受多变量.●hist 绘制统计频率直方图.●histfit(data,nbins) 绘制统计直方图与其正态分布拟合曲线.fplot函数的绘制区域为lims=[xmin,xmax],也可以用lims=[xmin,xmax,ymin,ymax]指定y 轴的区域.函数表达式可以是一个函数名,如sin,tan等;也可以是带上参数x的函数表达式,如sin(x),diric(x,10);也可以是一个用方括号括起的函数组,如[sin, cos].例1:fplot('sin',[0 4*pi])例2:fplot('sin(1 ./ x)', [0.01 0.1])例3:fplot('abs(exp(-j*x*(0:9))*ones(10,1))',[0 2*pi],'-o')例4:fplot('[sin(x), cos(x) , tan(x)]',[-2*pi 2*pi -2*pi 2*pi]) %%(图4.1.4.1)下面介绍的是其它几个作图函数的应用.例5:半对数坐标绘图t=0.001:0.002:20; y=5 + log(t) + t; semilogx(t,y, 'b') hold onsemilogx(t,t+5, 'r') %% (图4.1.4.2)例6:极坐标绘图t=0:0.01:2*pi;polar(t,sin(6*t)) %% (图4.1.4.3)图4.1.4.3 极坐标绘图 图4.1.4.4正态分布的统计直方图与其正态分布拟合曲线例7:正态分布图我们可以用命令normrnd 生成符合正态分布的随机数. normrnd(u,v,m,n)其中,u 表示生成随机数的期望,v 代表随机数的方差. 运行:a=normrnd(10,2,10000,1); histfit(a) %% (图4.1.4.4)我们可以得到正态分布的统计直方图与其正态分布拟合曲线.例8:比较正态分布(图4.1.4.5(1))与平均分布(图4.1.4.5(2))的分布图:yn=randn(30000,1); %% 正态分布 x=min(yn) : 0.2 : max(yn); subplot(121) hist(yn, x)yu=rand(30000,1); %% 平均分布 subplot(122) hist(yu, 25)-5050500100015002000250000.512004006008001000120014004.1.4.5(1) 4.1.4.5(2)图4.1.4.5 正态分布与平均分布的分布图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

矩阵运算
s*inv(B) B阵的逆乘 A^n A必为方阵,自乘n次 p^A A必为方阵,标量的矩阵乘方
A*B 内维相同矩阵的乘积 A/B A右除B (=A*inv(B)) B\A A左除B(一般与 A/B 结果不 同) expm(A) A的矩阵指数函数
logm(A) A的矩阵对数函数 sqrtm(A) funm(A)
3-1、矩阵特征参数运算
矩阵特征值函数及其功能
inv 矩阵求逆
trace 求矩阵的迹
det 求矩阵行列式
cond 条件数
rank 求矩阵的秩
condest 估计范-1条件数
poly 矩阵特征多项式 condeig 特征值有关条件数
norm 或 normest
矩阵和向量范数
eig 或 eigs
求特征值、特征向量
矩阵中有元素与截断误差相当时 的特征值问题
>> A=[3 -2 -0.9 2*eps;-2 4 -1 -eps; -eps/4 eps/2 -1 0; -0.5 -0.5 0.1 1] %A中含有形式“零”元素
>> [V1,D1]=eig(A);ER1=A*V1-V1*D1 %ER1 最大值0.5216
❖ T_part = 0.5160
❖ eigs比eig用时长,主要用于大型稀疏矩阵
稀疏矩阵
3-1、矩阵特征参数运算
3、行列式运算(方阵):>> det(a) 4、秩 >> rank(a) 5、迹 >> trace(a) %对比 trace(d) 6、范数运算 >> e=norm(a) %(2-范数); >> norm(a,1) %(1-范数) ;norm(a,inf) %(无穷范数);
>> t0=clock;[V,D]=eig(A);T_full=etime(clock,t0) % 指令eig的运算时间
❖ % T_full = 0.1570
>> options.tol=1e-8;options.disp=0; % 设置eigs运算精度,不显示中间迭
代结果
>> t0=clock;[V2,D2]=eigs(A,1,'lr',options);T_part=etime(clock,t 0) % 计算最大实部特征值和特征向量时指令eigs的运算时间
>> [l,u,p]=lu(a) %满足l*u=p*a
❖ 行列式和逆:detA=det(P-1LU)=±detUn=±u ii
A-1=U-1L-1P
i1
>> det(a); inv(a); %x=inv(a)*b ❖ 在matlab中求解Ax=b可以直接输入指令:
>> A\b
%x=A\b
其他矩阵分解计算
3-1、矩阵特征参数运算
1、逆运算:inv
>> a=[1 2 3;5 8 6;7 2 9], b=inv(a)
2、特征值计算
eig(全元素阵)
>>d=eig(a) >>[c,d]=eig(a)
[c,d]=eig(a,‘nobalance’)
%仅计算a的特征值 %满足a*c=c*d;
%a中有截断误差量级数
数组运算
s./B,B.\s 标量s分别除B中对应的元素 A.^n A的每个元素自乘n次 p.^A 以p为底,分别以A的每个元素为 指数求幂值 A.*B 对应元素之积 A./B A的元素被B的对应元素除 B.\A (一定与 A./B 结果相同)
exp(A) 以自然对数e为底,分别以A的 元素为指数,求幂 log(A) 对A的各元素求对数 sqrt(A) f(A)
eigs(大型稀疏矩阵)
>> d=eigs(a),[c,d]=eigs(a) %与eig同
>> [c0,d0]=eigs(a,2,10) %计算a的 2个在10附近的特征向量和特征值 >> eigs(a,2,'lm') % 'lm'最大幅值; 'sm'最小幅值;'lr'最大实
部;'sr'最小实部;'be'谱的两端
norm(a,'fro') %(Frobenius 范数) 7、条件数运算 >> d=cond(a) % 2-范数的条件数 >> d=cond(a,1) %1范数的条件数,或2、inf 相应范数的条件数)
线性方程组的求解
❖ 含有n个未知数的n个方程构成的方程组称为恰定方程组, 当det(A)≠0时存在唯一解;当 det(A)=0时由增广矩阵作行 的最简形式,从中找出方程组的基础解系及特解
❖ 如: a1,1x1 + a1,2x2 + … + a1,nxn
a2,1x1 + a2,1x2 + … + a2,nxn
an,1x1 + an,1x2 + … + a11 a12 a1n Aa21 a22 a2n,
an1 an2 ann
x1 xx2,
❖ 正交分解: >> [q,r]=qr(a) %r为上三角阵,q正交阵,满足a=q*r >> [q,r,p]=qr(a) %r上三角阵,q正交阵,p交换矩阵,满足a*p=q*r ❖ 特征值分解: >>[d,e]=eig(a) %d以a的特征向量作为列向量组成矩阵,e以特征向量作为主
xn
= b1 = b2 = bn
b1 bb2
bn
恰定方程组的解
❖ 线性代数中最常见的该方程的解法有: 1、利用公式求解: xd1e tA A A 1 1b b n 11 1 A A 2 2b b 1 n2 2 A A n nb 1 b nnn
式中Aij是元素aij的余子式 2、利用逆阵求解法,即:x=A-1b 3、利用Gaussian消元法 4、利用LU法求解
对于维数不高、条件数不大的矩阵,以上4种解法 结果相近。对于高阶大型矩阵主要应用LU分解法进 行求解。
恰定方程组的解
❖ LU分解(也称三角分解),满足:LU=PA 式中,L为主对角元为1的下三角阵,U上三角阵,P是由0或1组成
的交换矩阵。
>> a=[4 2 -1;3 -1 2;11 3 1] ; b=[2 10 8]'
>> [V2,D2]=eig(A,'nobalance');ER2=A*V2-V2*D2 % ER2 最大
值1.0e-014
%eig指令执行过程中首先调用使原矩阵各元素大致相 当的“平衡”程序,使原方阵中的小元素作用被放 大。
指令eig与eigs的比较
>> rand('state',1),A=rand(100,100)-0.5; % 产生100阶随机方阵
相关文档
最新文档