当前位置:文档之家› 最新matlab简明实例教程

最新matlab简明实例教程

最新matlab简明实例教程
最新matlab简明实例教程

MATLAB 数学工具软件实例

简明教程

王正盛编写

南京航空航天大学

第一章 MATLAB简介

MALAB 译于矩阵实验室MATrix LABoratory是用来提供通往LINPACK 和EISPACK 矩阵软件包接口的后来它渐渐发展成了通用科技

计算图视交互系统和程序语言

MATLAB 的基本数据单位是矩阵它的指令表达与数学工程中常用的习惯形式十分相似比如矩阵方程Ax=b 在MATLAB 中被写成A*x=b 而若要通过A,b

求x 那么只要写x=A\b 即可完全不需要对矩阵的乘法和求逆进行编程因此用MATLAB 解算问题要比用C Fortran 等语言简捷得多

MATLAB 发展到现在已经成为一个系列产品 MATLAB 主包和各种可选的toolbox 工具包主包中有数百个核心内部函数迄今所有的三十几个工具包又可分为两类功能性工具包和学科性工具包功能性工具包主要用来扩充MATLAB 的符号计算功能图视建模仿真功能文字处理功能以及硬

件实时交互功能这种功能性工具包用于多种学科而学科性工具包是专业性比较强的如控制工具包Control Toolbox信号处理工具包( Signal

Processing Toolbox) 通信工具包(Communication Toolbox)等都属此类开放性也许是MATLAB 最重要最受人欢迎的特点除内部函数外所有MATLAB 主包文件和各工具包文件都是可读可改的源文件用户可通过对源文件的修改或加入自己编写文件去构成新的专用工具包

MATLAB 已经受了用户的多年考验在欧美发达国家MATLAB 已经成为应用线性代数自动控制理论数理统计数字信号处理时间序列分析动态系统仿真等高级课程的基本教学工具成为攻读学位的大学生硕士生博士生必须掌握的基本技能在设计研究单位和工业部门MATLAB 被广泛地用于研究和解决各种具体工程问题

第二章 MATLAB 入门

2.1工作窗和指令行的操作除了通过菜单选项对工作窗进行控制外 MATLAB 还提供了许多通过

键盘输入的控制指令如下表

MATLAB工作窗中的部分通用指令

在运行中显示变量和文字内容

显示所有指定文件的全部内容

启动MATLAB 后就可以利用它工作了由于MATLAB 是一种交互式语言随时输入指令即时给出运算结果是它的主要工作方式当然更可以编制程序详见

第七章

2sin( 0.3π)

比如要计算的值只要在光标位置处键入

1+ 5

2*sin(0.3*pi)/(1+sqrt(5))

然后按[Enter]键,该指令便被执行并给出结果

ans = 0.5000

下面介绍控制光标对指令进行编辑的一些常用操作键常用操作键

在MATLAB 中矩阵输入的方法有多种此处只简单介绍矩阵的直接输入法详细介绍见第三章在MATLAB 中不必对矩阵维数做任何说明存储将自动配置在直接输入矩阵时矩阵元素用空格或逗号分隔矩阵行用隔离整个矩阵放在方括号[ ] 里

[例1]

A=[1,2,3;4,5,6;7,8,9;10,11,12]

A=

1 2 3

4 5 6

7 8 9

10 11 12

说明指令执行后矩阵A 被保存在MATLAB 的工作间Workspace中以备后用如果用户不用clear 指令清除它或对它重新定义该矩阵会一直保存在工作间中直到本MATLAB 指令窗被关闭为止

[例2]矩阵分行输入

A=[1 2 3 4

5 6 7 8

0 1 2 3]A = 1

2 3 4

5 6 7 8

0 1 2 3

[例3]矩阵元素输入

B(1,2)=3;B(4,4)=6;B(4,2)=11

B= 0 3 0 0

0 0 0 0

0 0 0 0

0 11 0 6

2.3语句与变量

MATLAB 采用表达式语句用户输入语句由MATLAB 系统结实运行MATLAB

语句有两种常见的形式1 表达式 2 变量=表达式

说明1 表达式由算符函数变量名和数字构成

2在第一种形式中表达式被执行后产生的矩阵将被自动赋给

名为ans 的变量并显示在屏幕上ans 是一个缺省变量名它

会被以后类似的操作刷新

3在第二种形式中等号右边的表达式是被演绎后产生的矩阵

将被赋给等号左边的变量存入内存并显示在屏幕上

4书写表达式时运算符号= + 以及* 等两侧允许有空格以增

加可读性但在复数或符号表达式中要尽量避免装饰性空格

以防出错

5变量名函数名以一个字母打头后面最多可接19 个字母

或数字注意MATLAB 是区分字母的大小写的

[例1] 表达式的计算结果

2001/81ans =

24.7037

[例2]运算结果的赋值

s=1-1/2+1/3-1/4+1/5-1/6+1/7-1/8;

说明结尾的分号作用是指令执行结果将不会显示在屏幕上但变量s 仍将驻留在内存中如想看s 的值只要键入s s = 0.6345

2.4Who Whos 和永久变量

Who 和Whos 这两个指令的作用都是列出在MATLAB 工作间中已经驻留的变量名清单不过Whos 在给出变量名的同时还给出它们的维数及性质

[例1]用 who 检查内存变量

who

Your variables are:

s

[例2]用whos 检查驻留变量的详细情况

whos

Name Size Bytes Class s

1x1 8 double array Grand

total is 1 elements using 8 bytes在

MATLAB 工作内存中还驻留几个由系统本身在启动时定

义的变量如下

表称为永久变量Permanent variables或称为预定义变量Predefined

variables

系统预定义的变量

2它们不会被清除内存变量指令clear 所清除 3 他们可以重新定义为其他值但用clear 可清除重定义值恢复预定义

[例1]无穷大s=1/0

Warning: Divide by zero.

s = Inf无穷大

a=Inf/inf a

= NaN

2.5数与表达式

MATLAB 的数值采用习惯的十进制表示可以带小数点或负号如下是合法的

3-99 0.0013 9.2445154 1.2434e-6 4.673e33

在采用IEEE 浮点算法的计算机上数值的相对精度是eps 即大约保持16 位有效数字数值范围大致为1×10?308 ~ 1×10308

表达式由下列算符构成并按习惯的优先次序进行运算

+ 加法减法 * 乘法 / 右除 \ 左除 ^ 乘方

注意设置两种除法是为了方便矩阵的运算对标量而言两者作用相同

[例1]

x=2*pi/3+2^3/5-0.3e-3

x =

3.6941

2.6复数和复矩阵

MATLAB 认识复数并定义i 和j 作为虚数单位矩阵元素允许是复数复变量和由它们组成的表达式

[例1]

z1=3+4*i,z2=2*exp(i*pi/6)

z=z1*z2

z1 =

3.0000 +

4.0000i

z2 =

1.7321 + 1.0000i

z =

1.1962 + 9.9282i

[例2]

A=[1,3;2,4]-i*[5,8;6,9]

B=[1+5*i,2+6*i;3+8*i,4+9*i]

C=A*B

A=

1.0000 - 5.0000i 3.0000 - 8.0000i

2.0000 - 6.0000i 4.0000 - 9.0000i

B=

1.0000 + 5.0000i

2.0000 + 6.0000i

3.0000 + 8.0000i

4.0000 + 9.0000i

C=

1.0e+002 *

0.9900 1.1600 - 0.0900i

1.1600 + 0.0900i 1.3700

2.7函数

MATLAB 的强大功能可函数中略见一斑本质上讲分为三类

1内部函数

2系统附带各种工具包中的M 文件所提供的大量函数

3用户自己增加的函数这一特点是其他许多软件平台无法比拟的MATLAB 提供的通用数理类函数包括

基本数学函数 特殊函数 基本矩

阵函数 特殊矩阵函数 矩阵分解和

分析函数 数据分析函数 微分方程

求解 多项式函数 非线性方程及其

优化函数 数值积分函数 信号处理

函数

[例] z=1233.344

x=sqrt(log(z))z

=

1.233344000000000e+003

x =

2.66786140168028

2.8显示格式

在缺省的状态下MATLAB 以短格式short 格式显示计算结果可以用MATLAB 命令窗口中format 指令来改变数字的显示格式由于MATLAB 以双精度执行所有运算显示格式的设置仅影响矩阵的显示不影响矩阵的

计算与存储

如果矩阵的所有元素都是整数则矩阵以不带小数点的格式显示如果有一个元素不是整数则有几种输出格式默认格式为short 格式只显示5 位

有效数字其他的显示格式可显示更多的有效数字还可用科学表示法

[例] x=[4/3

1.2345e-6] 默认

short格式x =

1.3333 0.0000

format short e 短格式科学表示

x

x =

1.3333e+000 1.2345e-

006format long 长格式x

x =

1.33333333333333 0.00000123450000

format long e 长格式科学表示

x

x =

1.333333333333333e+000 1.234500000000000e-006

format bank 银行格式

x

x = 1.33

0.00format hex 十六进制格式

x

x = 3ff5555555555555 3eb4b6231abfd271

format + +格式用于显示大矩阵的紧凑格式+ 空格分别表示正数负数和零

x x =++

另外还有一种命令为format compact(紧凑格式) 它消去了矩阵之间的间隔行这

样可在一屏中显示更多的信息

2.9变量的存储与调用

quit 和exit 指令都可退出MATLAB 结束MATLAB 任务会删除工作间中的变量在退出前可以保存工作空间以备再次调出使用这些变量保存的指令格式

1save 工作间中的所有变量保存在磁盘上名为matlab.mat 的文件中

2save [文件名] [变量名] 将指定的变量保存在指定文件中如save temp x y z 把x,y,z 这三个变量保存在文件temp.mat 中

在下次加载MATLAB 时可以利用load 指令将保存在文件中的变量恢复到工作间中其格式有

load 将保存在matlab.mat 中的变量装入到MATLAB 工作间中

load [文件名] [变量名] 从指定的文件中将指定的变量装入MATLAB 工作间如

load temp x 从文件temp.mat 中只将变量x 装入到MATLAB 工作间中

2.10图形图形是MATLAB 的主要特色之一MATLAB 图形指令具有自然简洁

灵活及易扩充的特点MATLAB 的指令很多这里仅介绍几个简单的绘图指令详见第六章

[例1]作多条曲线

t=0:pi/50:4*pi;

y0=exp(-t/3); y=exp(-

t/3).*sin(3*t);

plot(t,y,t,y0,t,-y0)

grid

[例2]三维曲面

x=-8:0.5:8;

y=x';

X=ones(size(y))*x;

Y=y*ones(size(x));

R=sqrt(X.^2+Y.^2)+eps;

Z=sin(R)./R; mesh(Z);

colormap([1,0,0])

2.11lp 指令lookfor 指令及其他帮助指令

MATLAB 的在线帮助系统相当完备就查询系统的调用方式而言可分为两种1从MATLAB 指令窗的 help 菜单选项中寻求帮助此与一般windows 的求助方法一样

2在MATLAB 指令窗中直接键入求助指令

(i)help 不带任何参数显示出MATLAB 的目录项产生清单信息

help

HELP topics:

1

2

matlab\general - General purpose commands. matlab\ops - Operators and special characters. matlab\lang - Programming language constructs. matlab\elmat - Elementary matrices and matrix manipulation. matlab\elfun - Elementary math functions. matlab\specfun - Specialized math functions. matlab\matfun - Matrix functions - numerical linear algebra. matlab\datafun - Data analysis and Fourier transforms.

matlab\polyfun - Interpolation and polynomials. matlab\funfun - Function functions and ODE

solvers.

matlab\sparfun - Sparse matrices.

matlab\graph2d - Two dimensional graphs.

matlab\graph3d - Three dimensional graphs.

matlab\specgraph - Specialized graphs.

matlab\graphics - Handle Graphics.

matlab\uitools - Graphical user interface tools. matlab\strfun - Character strings. matlab\iofun - File input/output. matlab\timefun - Time and dates.

matlab\datatypes - Data types and structures.

matlab\winfun - Windows Operating System Interface Files (DDE/ActiveX) matlab\demos - Examples and demonstrations.

toolbox\runtime - MATLAB Runtime Server Development Kit rtw\windows - Real Time Windows Target.

daq\daq - Data Acquisition Toolbox daq\daqdemos - Data Acquisition Toolbox - Data Acquisition Demos. toolbox\dials - Dials & Gauges Blockset toolbox\rptgenext - Simulink Report Generator toolbox\rptgen - MATLAB Report Generator database\database - Database Toolbox. database\dbdemos - Database Toolbox Demonstration Functions.

powersys\powerdemo - Power System Blockset Demos. powersys\powersys - Power System Blockset

toolbox\compiler - MATLAB Compiler (and Compiler

1.2.1) comm\comm - Communications Toolbox. comm\commmasks - Communications Toolbox mask helper functions. comm\commsfun - Communications Toolbox S-functions. comm\commsim - Communications Toolbox Simulink files.

toolbox\symbolic - Symbolic Math Toolbox.

nag\nag - NAG Foundation Toolbox - Numerical & Statistical Library

nag\examples - NAG Foundation Toolbox - Numerical & Statistical Library

map\map - Mapping Toolbox

map\mapdisp - Mapping Toolbox Map Definition and Display.

map\mapproj - Mapping Toolbox Projections.

wavelet\wavelet - Wavelet Toolbox.

wavelet\wavedemo - Wavelet Toolbox Demos.

toolbox\pde - Partial Differential Equation

Toolbox.

finance\finance - Financial Toolbox.

finance\calendar - Financial Toolbox calendar

functions.

finance\findemos - Financial Toolbox demonstration

functions. lmi\lmictrl - LMI Control Toolbox:

Control Applications

lmi\lmilab - LMI Control Toolbox

qft\qft - QFT Control Design

Toolbox.

qft\qftdemos - QFT Control Design Toolbox

Demos toolbox\fixpoint - Fixed-Point Blockset

fixpoint\fxpdemos - Fixed-Point Blockset Demos

fixpoint\obsolete - Obsolete Fixed-Point Blockset

dspblks\dspblks - DSP Blockset.

dspblks\dspmex - (No table of contents file)

dspblks\dspdemos - DSP Blockset demonstrations and

examples. dspblks\dspmasks - DSP Blockset mask

helper functions.

fuzzy\fuzzy - Fuzzy Logic Toolbox.

fuzzy\fuzdemos - Fuzzy Logic Toolbox Demos.

mpc\mpccmds - Model Predictive Control Toolbox.

mpc\mpcdemos - Model Predictive Control Toolbox

fdident\fdident - Frequency Domain Identification

Toolbox. fdident\fddemos - Demonstrations for the

FDIDENT Toolbox

hosa\hosa - Higher-Order Spectral Analysis

Toolbox. hosa\hosademo - Higher-Order Spectral

Analysis Toolbox - Demo suite toolbox\stats -

Statistics Toolbox. toolbox\ncd - Nonlinear

Control Design Blockset images\images - Image

Processing Toolbox. images\imdemos - Image

Processing Toolbox --- demos and sample images nnet\nnet - Neural Network Toolbox. nnet\nndemos - Neural

Network Demonstrations. nnet\nnutils - (No table

of contents file) nnet\nnobsolete - (No table of

contents file) mutools\commands - Mu-Analysis and

Synthesis Toolbox. mutools\subs - Mu-Analysis

and Synthesis Toolbox.

signal\signal - Signal Processing Toolbox.

signal\siggui - Signal Processing Toolbox GUI

signal\sigdemos - Signal Processing Toolbox Demonstrations toolbox\splines - Spline Toolbox.

toolbox\optim - Optimization Toolbox.

toolbox\robust - Robust Control Toolbox.

toolbox\ident - System Identification Toolbox.

toolbox\control - Control System Toolbox.

control\ctrlguis - Control System Toolbox -- GUI

support functions. control\obsolete - Control System

Toolbox -- obsolete commands. toolbox\rtw -

Real-Time Workshop rtw\rtwdemos - (No table of

contents file) stateflow\sfdemos - Stateflow demonstrations and samples.

toolbox\sb2sl - SystemBuild to Simulink Translator stateflow\stateflow - Stateflow simulink\simulink - Simulink simulink\blocks - Simulink block library.

simulink\simdemos - Simulink 3 demonstrations and samples.

simulink\dee - Differential Equation Editor

MATLAB53\work - (No table of contents file)

toolbox\local - Preferences.

For more help on directory/topic, type "help topic".

(ii) help 目录名显示指定目录中的所有命令及其函数help lang 将列

出与MATLAB 编程语言的所有命令及其函数help matfun 将列出

与数值线性代数有关的所有矩阵函数help elfun 列出所有基本函数

iiihelp 命令名/函数名/符号显示指定的命令名/函数名/符号的详细信

[例]

help eig 显示计算矩阵特征值和特征向量的函数eig 的说明

help eig

EIG Eigenvalues and eigenvectors.

E = EIG(X) is a vector containing the eigenvalues of

a square matrix X.

[V,D] = EIG(X) produces a diagonal matrix D of

eigenvalues and a

full matrix V whose columns are the

corresponding eigenvectors so that X*V = V*D.

[V,D] = EIG(X,'nobalance') performs the computation

with balancing

disabled, which sometimes gives more accurate

results for certain problems with unusual scaling.

E = EIG(A,B) is a vector containing the

generalized eigenvalues of square matrices A and B.

[V,D] = EIG(A,B) produces a diagonal matrix D of generalized

eigenvalues and a full matrix V whose columns are the corresponding eigenvectors so that A*V = B*V*D.

See also CONDEIG, EIGS.

Overloaded methods

help sym/eig.m help

lti/eig.m

注意help 的工作机理是是把指定名字的那个M 文件的第一段注释内容显示出

来以构成自己文件的再线求助

lookfor 指令可以根据用户提供的完整或不完整的关键词去搜索出一组与之有关

的指令

[例1]查找有关积分的指令

lookfor integral

[例2]ELLIPKE Complete elliptic integral.

[例3]EXPINT Exponential integral function.

[例4]DBLQUAD Numerically evaluate double integral.

[例5]INNERLP Used with DBLQUAD to evaluate inner loop of integral.

[例6]QUAD Numerically evaluate integral, low order method.

[例7]QUAD8 Numerically evaluate integral, higher order method.

[例8]COSINT Cosine integral function.

[例9]SININT Sine integral function.

[例10]ASSEMA Assembles area integral contributions in a PDE problem.

[例11]COSINT Cosine integral function.

[例12]FOURIER Fourier integral transform.

[例13]IFOURIER Inverse Fourier integral transform.

[例14]SININT Sine integral function.

BLKPIDCON The output of the block is the sum of

proportional, integral and

[例2]查找有关傅里叶变换的指令

lookfor fourier

FFT Discrete Fourier transform.

FFT2 Two-dimensional discrete Fourier Transform.

FFTN N-dimensional discrete Fourier Transform. IFFT

Inverse discrete Fourier transform. IFFT2 Two-dimensional inverse discrete Fourier transform.

IFFTN N-dimensional inverse discrete Fourier transform. XFOURIER Graphics demo of Fourier series expansion. INSTDFFT Inverse non-standard 1-D fast Fourier transform. NSTDFFT Non-standard 1-D fast Fourier transform.

EXPFOU Write data to a Fourier vector or a (maybe existing) file (for ELIS).

IMPFOU Read complex amplitudes from a Fourier vector or

file (used by ELIS).

MODIFYFV Modify Fourier (maybe also variance) data by

given transfer function.

SIMFOU Generate simulated Fourier amplitudes.

PLOTFOU Plot contents of Fourier files

DFTMTX Discrete Fourier transform matrix.

FOURIER Fourier integral transform.

IFOURIER Inverse Fourier integral transform.

注意 lookfor 指令的机制对MATLAB 中的每个M 文件注释区的第一行进行扫

描一旦发现包含要查询的字符串就显示出来提示用户也可利用此机

理建立自己文件的在线帮助其他帮助指令

按扩展名分类列出在搜索路径中指定目录上

的文件名

列出指定名字文件所在的目录

2.12

为了保护MATLAB 目录结构的严整为了用户自己用MATLAB 所创建修改的M 文件和其他文件的方便用户应建立自己的工作目录

MATLAB 启动后的默认目录是C:\MATLAB\BIN 若不建子目录则MATLAB

环境产生的数据文件就登陆在这个缺省目录上建立工作目录两种方法1 在DOS 环境中建立 ;(2)在windows 环境下建立

MATLAB 只能在启动时由mathabrc.m设定的路径上搜索不能

与原定路径以外的其他目录交换信息可用以下三种方法扩充

(1 在MATLAB 指令窗口中键入 CD C:\MYDIR

2利用path 指令扩展搜索路径 path(path, 'c:\mydir')

3在MATLAB 环境下键入pathtool 或者在MATLAB 指令窗口菜单上

File 中的Set path 项设置

第三章 MATLAB 的数值计算功能

3.1数值矩阵的创建保存和数据格式

3.1.1创建矩阵的直接输入法前面已

述此出不赘述

[例]

x=14 ;y=4.32;

A=[x,2*x-y,0;

sin(pi/4),3*y+x,sqrt(y)]

A =

14.0000 23.6800 0

0.7071 26.9600 2.0785

3.1.2利用MATLAB 函数和语句创建数值矩阵[ 例1]利用指令

reshape 创建数值矩阵av=1:12 %产生12个元素的行向量av

以%开头的是注释行 bm=reshape(av,3,4) %利用向量av 创

建3×4矩阵bm

av =

1 2 3 4 5 6 7 8 9 10 11

12

bm =

1 4 7 10

2 5 8 11

3 6 9 12

[例2]利用指令diag 产生对角阵ar=rand(4,4) %产生4×4的

0-1均匀分布随即矩阵ar d=diag(ar) %用矩阵的主对角

线元素形成向量d D=diag(d) %用向量d构成对角矩

阵D

ar =

0.9501 0.8913 0.8214 0.9218

0.2311 0.7621 0.4447 0.7382

0.6068 0.4565 0.6154 0.1763

0.4860 0.0185 0.7919

0.4057 d = 0.9501

0.7621

0.6154

0.4057

D =

0.9501 0 0 0

0 0.7621 0 0

0 0 0.6154 0

0 0 0 0.4057

1.0.0利用M 文件创建和保存矩阵本节方法既适用于数值矩阵又适用于符号矩阵[例1]创建和保存矩阵AM 的matrix.m 文件生成过程步骤1 使用DOS 的编辑器edit ,Windows 的书写器(write)记事本notepad 或其他字处理软件如

Word 等编辑如下AM=[1 2 3;3 4 5]

步骤2 把此内容以纯文本方式ASCII 保存在用户自己的目录下名为matrix.m 的文件中

步骤3 在MATLAB 指令窗中只要键入matrix 矩阵AM 就会自动生成于MATLAB 工作内存中即产生一个名为AM 的变量供显示和调用

3.1.4通过MAT 文件保存和获取矩阵

MAT 文件是MATLAB 保存数据的一种标准格式二进制文件MAT 文件的生成和调用由指令save 和load 进行

[例1]把矩阵AR 保存到文件大他data.mat

步骤1 在矩阵AR 存在于MATLAB 内存空间的前提下键入

save data AR

步骤2在下次进入MATLAB 后需要矩阵AR 时键入如下边可将data.mat 中的内容读入MATLAB 内存空间

load data

说明MATLAB 默认扩展名为.mat默认路径为matlab\bin 子目录用户如把data.mat 登陆在指定目录可用如下命令保存或调入save c:\mydir\data AR load c:\mydir\data AR

3.1.5利用外部数据文件装入到指定矩阵

假如磁盘中已有名为c:\mydir\data.dat 的ASCII 数据文件利用指令load

c:\mydir\data.dat 可在MATLAB 工作空间产生一个名为 data 的矩阵即变量当然也可以用指令fopen""fread"及其他MATLAB 底层数

据输入输出I/O 指令实现可查看帮助如help fopen

3.2矩阵的标识

矩阵的元素子矩阵可以通过标识向量冒号的标识来援引和赋值

[例1]

b=[1 2 3 4 5; 6 7 8 9 10 ;11 12 13 14 15]

b23=b(2,3) b1=b(1:2,[1 3 5]) b2=b([3

1],:)

b([1 3],[2 4])=zeros(2)

b =

1 2 3 4 5

6 7 8 9

10 11 12 13

14 15 b23 = 8

b1 =

1 3

5 6 8

10 b2 =

11 12 13 14

15 1 2 3

4 5 b =

1 0 3 0 5

6 7 8 9 10

11 0 13 0 15

[例2]

x=[1 2 3 4 5] %产生1×5向量

x =

1 2 3 4 5

l=x<=3 %标出小于等于3 的元素的位置l

=

1 1 1 0 0

x=x(l) %获得元素不超过3 的子向量

x =

1 2 3

3.3矩阵运算和数组运算矩阵运算和数组运算是Matlab 的数值运算中的两大类运算矩阵运算是按矩阵运算法则进行的运算数组运算无论是何种运算操作都是对元素逐个进行

矩阵运算和数组运算指令对照汇总

a=[1 2 3; 4 5 6; 7 8 9];b=[1 2 3; 3 2 1;1 4 5]; c=[1 1 1;2 3 1;1 0 2];

d=a*c^2+b

d =

32 31 36

82 79 82

128 129 134

3.4矩阵函数和数组函数

3.4.1基本数组函数

数组函数是对各个元素的函数设计的

f(.)基本函数表

基本矩阵函数指令

矩阵的条件数最大奇异

范数全部奇平方根矩阵A

矩阵的秩非零奇异值的

a=magic(5);

s=svd(a)'

d=det(a),t=trace(a),rk=rank(a),c=cond(a)

n1=norm(a,1),n2=norm(a),ninf=norm(a,inf),nf=norm(a,'fro') s =

65.0000 22.5471 21.6874 13.4036

11.9008 d = 5070000 t = 65 rk = 5

c =

5.4618 n1

= 65

n2 =

65.0000

ninf =

65 nf =

74.3303

3.5 线性方程组的直接解法线性方程组

Ax=b A 是n× m 的系数矩阵

1)当n=m 且非奇异时此方程称为恰定方程Properly Determined

Equation

2)当n>m 时此方程称为超定方程Overdetermined Equation

3)当n

3.5.1矩阵逆和除法解恰定方程组

1采用求逆运算

x=inv(A)*b

2采用左除运算x=A\b

说明

1 由于MATLAB 遵循IEEE 算法所以即使A 阵奇异该运算也照样进行

但在运算结束时一方面给出警告Warning:Matrix is singular to working precision 另一方面所得逆阵的元素都是Inf无穷大

1当A 为病态时也给出警告信息

2在MATLAB 中inv 指令不很有用MATLAB 推荐尽量使用除运算少用逆运算

例1求逆法和左除法解恰定方程组的性能对比为对比两种方法的性能先用以下指令构造一个条件数很大的高阶恰定方程组rand('seed',12);%选定随机种子目的是可重复产生随机矩阵A

A=rand(500)+1.e8;%rand(500)生成500×500均匀分布的随机矩

阵 %每个随机矩阵元素加一个数的目的是使A的条件

数变大x=ones(500,1); %令解向量x为全1的500元列向量

b=A*x; %为使Ax=b方程一致用A和x生成b向量cond(A) %计

算矩阵A的条件数ans =

1.7608e+013

过程 1 求逆法解恰定方程组的误差残差和所用计算时间

tic %启动记时器Stopwatch Timer

xi=inv(A)*b; %xi是用求逆法解恰定方程组所得的解

toc %关闭计时器并显示解方程所用的时间eri=norm(x-

xi) %解向量xi与真解向量的2-范误差rei=norm(A*xi-

b)/norm(b) %方程的2-范相对残差elapsed_time =

7.2500 eri = 0.0066 rei = 1.5488e-006

过程2 左除法解恰定方程组的误差残差和所用计算时间tic

xd=A\b;% xd是用左除法解恰定方程组所得的解

toc erd=norm(x-xd)

red=norm(A*xd-b)/norm(b)

elapsed_time =

3.3500 erd =

0.0021 red =

1.2695e-015

说明

1计算结果表明除法求解比求逆求解速度明显快精度相当但除法的相对残差几乎是机器零而逆阵法的相对残差高得多

2MATLAB在设计求逆函数inv 时采用的是Gauss 消去法

3MATLAB在设计左除运算解恰定方程时并不求逆而是直接采用Gauss 消去法求解有效地减少了残差所以即便在高条件数下也能得到较好的结果

3.5.2矩阵除法解超定方程组

1求正则方程Normal equations( A T A)x = A T b 的解

2用Householder 变换Householder transformation 直接求原超定方程的最小二乘解

由于第二种方程法采用的是正交变换据最小二乘理论可知第二种方法所得的解的准确性可靠性都比第一种方法好得多MATLAB 解超定方程组用的就是第二种方法

例除运算解超定方程的简单算例

a=[1 2 3;4 5 -6;7 8 9;10 11 12];

b=[1:4]'; x=a\b x = -0.3333

0.6667

0.0000

3.5.3矩阵除法解欠定方程组

欠定方程的解是不唯一的用除法运算所得的解有两个重要特征在解中至多有Rank(A)个非零元素 2 它是这类型解中范数最小的一个例除运算解欠定方程的简单算例

a=[1 2 3;4 5 -6;7 8 9;10 11 12]; b=a'; c=[1 3 3]'; x=b\c x = 2.0000

0.1667 0

-0.1667

3.6 矩阵分解函数 3.6.1 LU 分解

[L,U]=lu(X)产生一个上三角矩阵U 和一个心理上下三角矩阵L 即由

下三角矩阵和置换矩阵构成使得X=L*U

[L,U,P]=lu(X) 产生一个上三角矩阵U 和一个下三角矩阵L 以及一个置换矩阵 P 使得P*X=L*U 注意X 必须是方阵

例1 用lu 分解的两种指令格式对矩阵A 进行 LU 分解解 A=[1 –1 1; 5 –4 3; 2 1 1] [L,U]=lu(A) [L,U,P]=lu(A) A = 1 -1 1 5 -4 3 2 1 1 [ L,U]=lu(a ) L =

0.2000 -0.0769 1.0000 1.0000 0 0 0.4000 1.0000 0 U =

5.0000 -4.0000 3.0000 0 2.6000 -0.2000 0 0 0.3846 [ L,U,P]=lu(a ) L =

1.0000 0 0 0.4000 1.0000 0 0.2000 -0.0769 1.0000 U =

5.0000 -4.0000 3.0000 0 2.6000 -0.2000 0 0 0.3846 P =

0 1 0

0 0 1

1

一个简单的Matlab_GUI编程实例

Matlab GUI编程教程(适用于初学者) 1.首先我们新建一个GUI文件:如下图所示; 选择Blank GUI(Default) 2.进入GUI开发环境以后添加两个编辑文本框,6个静态文本框,和一个按钮,布置如下

图所示; 布置好各控件以后,我们就可以来为这些控件编写程序来实现两数相加的功能了。3.我们先为数据1文本框添加代码; 点击上图所示红色方框,选择edit1_Callback,光标便立刻移到下面这段代码的位置。 1. 2. 3.function edit1_Callback(hObject, eventdata, handles) 4.% hObject handle to edit1 (see GCBO) 5.% eventdata reserved - to be defined in a future version of MATLAB

6.% handles structure with handles and user data (see GUIDATA) 7.% Hints: get(hObject,'String') returns contents of edit1 as text 8.% str2double(get(hObject,'String')) returns contents of edit1 as a double 复制代码 然后在上面这段代码的下面插入如下代码: 1. 2.%以字符串的形式来存储数据文本框1的内容. 如果字符串不是数字,则现实空白内容input = str2num(get(hObject,'String')); %检查输入是否为空. 如果为空,则默认显示为0if (isempty(input)) set(hObject,'String','0')endguidata(hObject, handles); 复制代码 这段代码使得输入被严格限制,我们不能试图输入一个非数字。 4.为edit2_Callback添加同样一段代码 5 现在我们为计算按钮添加代码来实现把数据1和数据2相加的目的。 用3中同样的方法在m文件中找到pushbutton1_Callback代码段 如下; 1.function pushbutton1_Callback(hObject, eventdata, handles) 2.% hObject handle to pushbutton1 (see GCBO) 3.% eventdata reserved - to be defined in a future version of MATLAB 4.% handles structure with handles and user data (see GUIDATA) 复制代码

(整理)matlab实例教程-比较实用.

实验一特殊函数与图形 一、问题背景与实验目的 二、相关函数(命令)及简介 三、实验内容 四、自己动手 一、问题背景与实验目的 著名的Riemann函数大家都很熟悉了,但是关于它的图像你是否清楚呢除了最上面那几点,其他都很难画吧你想不想看看下面那些“挤在一起”的点是怎样分布的呢还有几何中的马鞍面、单叶双曲面等是怎样由直线生成的,是不是也想目睹一下呢这些,都离不开绘图. 实际上绘图一直是数学中的一种重要手段,借助图形,往往可以化繁为简,使抽象的对象得到明白直观的体现.比如函数的基本性质,一个图形常可以使之一目了然,非常有效.它虽不能代替严格的分析与证明,但在问题的研究过程中,可以帮助研究人员节约相当一部分精力.此外,它还可以使计算、证明、建模等的结果得到更明白易懂的表现,有时,这比科学论证更有说服力.同时,数学的教学与学习过程也离不开绘图.借助直观的图形,常可以使初学者更容易接受新知识.如数学分析中有不少函数,其解析式着实让人望而生畏,即使对其性质作了详尽的分析,还是感到难明就里;但如果能看到它的图形,再配合理论分析,则问题可以迎刃而解.又如在几何的学习中,会遇到大量的曲线与曲面,也离不开图形的配合. 传统的手工作图,往往费力耗时,效果也不尽理想.计算机恰恰弥补了这个不足,使你可以方便地指定各种视角、比例、明暗,从各个角度进行观察.本实验通过对函数的图形表示和几个曲面(线)图形的介绍,一方面展示它们的特点,另一方面,也将就Matlab软件的作图功能作一个简单介绍.大家将会看到,Matlab 的作图功能非常强大. 二、相关函数(命令)及简介 1.平面作图函数:plot,其基本调用形式: plot(x,y,s) 以x作为横坐标,y作为纵坐标.s是图形显示属性的设置选项.例如:x=-pi:pi/10:pi; y=sin(x); plot(x,y,'--rh','linewidth',2,'markeredgecolor','b','markerfac ecolor','g')

MATLAB 实用教程 课后习题答案

第二章 1.计算复数3+4i与5-6i的乘积。 a=3+4i b=5-6i c=a*b 2.构建结构体Students,属性包含Name、age和Email,数据包括{’Zhang’,18,*‘Zhang@16 https://www.doczj.com/doc/4a13267056.html,’,’Zhang@https://www.doczj.com/doc/4a13267056.html,’+}、{’Wang’,21,[]}和{’Li’,[],[]},构建后读取所有Name属性值,并且修改’Zhang’的Age属性值为19。 Students(1).Age=18 Students(1).Email='zhang@https://www.doczj.com/doc/4a13267056.html,','zhang@https://www.doczj.com/doc/4a13267056.html,' Students(2).Name='Wang' Students(2).Age=21 Students(2).Email=[] Students(3).Name='Li' Students(3).Age=[] Students(3).Email=[] https://www.doczj.com/doc/4a13267056.html, Student(1).Age(1)=19 Student.Age 3.用满矩阵和稀疏矩阵存储方式分别构造下属矩阵: A=[0 1 0 0 0;1 0 0 0 0;0 0 0 0 0;0 0 0 1 0] A=[0 1 0 0 0;1 0 0 0 0;0 0 0 0 0;0 0 0 1 0] S=sparse(A) S=sparse([2,1,4],[1,2,4],[1,1,1],4,5) 4.采用向量构造符得到向量[1,5,9....,41]. A=1:4:41 5.按水平和竖直方向分别合并下述两个矩阵:A=[1 0 0;1 1 0;0 0 1],B=[2 3 4;5 6 7;8 9 10] A=[1 0 0;1 1 0;0 0 1] B=[2 3 4;5 6 7;8 9 10] C=[A B] D=[A;B] 6.分别删除第五题两个结果的第2行。 A=[1 0 0;1 1 0;0 0 1] B=[2 3 4;5 6 7;8 9 10] C=[A B] D=[A;B] C(2,:)=[] D(2,:)=[] 7.分别将第5题两个结果的第2行最后3列的数值改为[11 12 13]。 A=[1 0 0;1 1 0;0 0 1] B=[2 3 4;5 6 7;8 9 10] C=[A B] D=[A;B]

Matlab基础教程

1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。 小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25 x = 42 此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。 小提示: MATLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。MATLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定.这些功能使的MATLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。 若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例: y = sin(10)*exp(-0.3*4^2);

若要显示变数y的值,直接键入y即可: >>y y =-0.0045 在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数。 下表即为MATLAB常用的基本数学函数及三角函数: 小整理:MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数 ceil(x):天花板函数,即加入正小数至最近整数 rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开

含答案《MATLAB实用教程》

第二章 MATLAB 语言及应用实验项目 实验一 MATLAB 数值计算 三、实验内容与步骤 1.创建矩阵 ????????=98765432 1a (1(2 )用(3)用(42.矩阵的运算 (1)利用矩阵除法解线性方程组。 ????? ? ?=+++=-+-=+++=+-12 224732 258232432143214321421x x x x x x x x x x x x x x x 将方程表示为AX=B ,计算X=A\B 。 (2)利用矩阵的基本运算求解矩阵方程。已知矩阵A 和B 满足关系式A -1BA=6A+BA ,计算矩阵B 。 其中??? ? ??????=7/10004/10003/1A , Ps: format rat a=[1/3 0 0;0 1/4 0;0 0 1/7]; b=inv(a)*inv(inv(a)-eye(3))*6*a (3)计算矩阵的特征值和特征向量。 已知矩阵? ?? ? ??????--=1104152021X ,计算其特征值和特征向量。

和相频特性Fw=-arctan(2w),w 的范围为[0.01,10],按对数均匀分布。 3.多项式的运算 (1)多项式的运算。已知表达式G(x)=(x-4)(x+5)(x 2 -6x+9),展开多项式形式,并计算当x 在[0,20]内变化时G(x)的值,计算出G(x)=0的根。Page 324 (2)多项式的拟合与插值。将多项式G(x)=x 4-5x 3-17x 2 +129x-180,当x 在[0,20]多项式的值上下加上随机数的偏差构成y1,对y1进行拟合。对G(x)和y1分别进行插值,计算在5.5处的值。Page 325 四、思考练习题 1.使用logspace 函数创建0~4π的行向量,有20个元素,查看其元素分布情况。 Ps: logspace(log10(0),log10(4*pi),20) (2) sort(c,2) %顺序排列 3.1多项式 1)f(x)=2x 2+3x+5x+8用向量表示该多项式,并计算f(10)值. 2)根据多项式的根[-0.5 -3+4i -3-4i]创建多项式。 r=[-0.5,-3+4i,-3-4i]; p=poly(r); poly2str(p,'x') 3)把表达式(x 2+2x+2)(x 2+5x+4)展开为多项式形式,并求对应方程的根。 Ps a1=[1 2 2]; a2=[1 5 4]; a=conv(a1,a2) 4)求多项式3x 6+12x 5+4x 4+7x 3+8x+1除以(x-3)(x 3+5x)的商和余式。 3.2曲线拟合

matlab实用教程

MATLAB简介 https://www.doczj.com/doc/4a13267056.html,/ 1.MATLAB的概况 MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多. 当前流行的MATLAB 5.3/Simulink 3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类. 开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包. 2.MATLAB产生的历史背景 在70年代中期,Cleve Moler博士和其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库.EISPACK是特征值求解的FOETRAN程序库,LINPACK是解线性方程的程序库.在当时,这两个程序库代表矩阵运算的最高水平. 到70年代后期,身为美国New Mexico大学计算机系系主任的Cleve Moler,在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK程序库,但他发现学生用FORTRAN编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写EISPACK和LINPACK的接口程序.Cleve Moler给这个接口程序取名为MATLAB,该名为矩阵(matrix)和实验室(labotatory)两个英文单词的前三个字母的组合.在以后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传. 1983年春天,Cleve Moler到Standford大学讲学,MATLAB深深地吸引了工程师John Little.John Little敏锐地觉察到MATLAB在工程领域的广阔前景.同年,他和Cleve Moler,Steve Bangert一起,用C语言开发了第二代专业版.这一代的MATLAB语言同时具备了数值计算和数据图示化的功能. 1984年,Cleve Moler和John Little成立了Math Works公司,正式把MATLAB推向市场,并继续进行MATLAB的研究和开发. 在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类.一类是数值计算型软件,如MATLAB,Xmath,Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,Mathematica,Maple等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低.MathWorks公司顺应多功

Matlab绘图教程(大量实例PPT)

MATLAB绘图

二维数据曲线图 p plot函数的基本调用格式为: x,y) ) plot( plot(x,y 其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。 数据 例1 在0≤x2π区间内,绘制曲线y=2e-0.5x cos(4πx) 1≤区间内绘制曲线205x(4) 程序如下: x=0:pi/100:2*pi; cos(4*pi*x); 0.5*x).*cos (4*pi*x); y=2*exp(--0.5*x).* y=2*exp( x,y)) plot(x,y plot(x y plot( x y)

例2 绘制曲线。 绘制曲线 程序如下: t=0:0.1:2*pi; x=t.sin(3t); x=t*sin(3*t); y=t.*sin(t).*sin(t); plot( x,y);); plot(x,y

数最简单的调用格式是包含个输参数plot函数最简单的调用格式是只包含一个输入参数:p() plot(x) 在这种情况下,当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出条连续曲线,标为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图。

绘制多根二维曲线 1.plot函数的输入参数是矩阵形式时 数的输参数是矩阵形式时 (1) 当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同颜色的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。 (2) 当x,y是同维矩阵时,则以x,y对应列元素为横、 纵坐标分别绘制曲线,曲线条数等于矩阵的列数。纵坐标分别绘制曲线曲线条数等于矩阵的列数

相关主题
文本预览
相关文档 最新文档