39
Matlab

第 二 篇 Matlab

  • Upload
    lynton

  • View
    90

  • Download
    0

Embed Size (px)

DESCRIPTION

第 二 篇 Matlab. 第一章矩阵及其基本运算. 一、矩阵的表示 1 .实数值矩阵生成 2 .复数矩阵生成 3 . 符号矩阵的生成 用 sym 函数或 syms 函数 4 . 大矩阵的生成 .m 文件、数据文件的读入. 5 . 特殊矩阵的生成 全零阵、全 1 阵、单位阵: zeros,eye,ones 随机矩阵: 均匀分布: rand 标准正态分布: randn 线性等分向量: linspace Hilbert 矩阵: hilb 魔方矩阵: magic. 二、矩阵操作 1 .取矩阵中的元素 - PowerPoint PPT Presentation

Citation preview

Page 1: 第  二  篇 Matlab

第 二 篇Matlab

Page 2: 第  二  篇 Matlab

第一章 矩阵及其基本运算一、矩阵的表示

1 .实数值矩阵生成 2 .复数矩阵生成3. 符号矩阵的生成

用 sym 函数或 syms 函数 4. 大矩阵的生成

.m 文件、数据文件的读入

Page 3: 第  二  篇 Matlab

5. 特殊矩阵的生成全零阵、全 1 阵、单位阵: zeros,eye,ones

随机矩阵:均匀分布: rand标准正态分布: randn

线性等分向量: linspaceHilbert 矩阵: hilb 魔方矩阵: magic

Page 4: 第  二  篇 Matlab

二、矩阵操作1 .取矩阵中的元素 2 .增加及删除矩阵中的元素3 .矩阵的旋转与变形

三、矩阵运算1. 加减法运算2. 乘法运算

Page 5: 第  二  篇 Matlab

① 向量乘法② 矩阵乘法③ 数组乘法(数乘)

3. 集合运算并: union 返回 a 、 b 的并集,即 c = a

∪b

交: intersect 返回向量 a 、 b 的公共部分,即 c= a∩b

差: setdiff 返回属于 a 但不属于 b 的不同元素的集合, C = a-b

交集的非: setxor

Page 6: 第  二  篇 Matlab

检测集合中的元素: ismember

4. 除法运算A / B

5. 矩阵乘方exp(A) : EA

6. 矩阵函数expm logm sqrtm

Page 7: 第  二  篇 Matlab

7. 方阵的行列式: det

8. 方阵的逆: inv

9. 矩阵的迹: trace

10. 矩阵的秩: rank

11. 矩阵和向量的范数 norm 欧几里德范数norm(x,inf ) 无穷范数

Page 8: 第  二  篇 Matlab

四、矩阵分解1 . LU 分解: [L,U]=lu(X) U 为上三角阵, L 为下三角阵或其变换形式,满足 LU=

X 2 . QR 分解: [Q,R]=qr(A)

求得正交矩阵 Q 和上三角阵 R , Q 和 R 满足 A=QR

3 .特征值分解 [V,D]=eig(A)

计算 A 的特征值对角阵 D 和特征向量 V ,使 AV=VD 成立五、其它

二次型、秩与线性相关性、稀疏矩阵

Page 9: 第  二  篇 Matlab

第二章 Matlab 语言基础一、 M 文件

1 .脚本文件:在 Matlab 的工作空间内对数据进行操作。2 .函数文件:可接受输入参数并返回输出参数,其内的变量不占用 Matlab 工作空间,第一行包含 function注: M 文件的调用以文件名为准。

% 为 Matlab 的注释符,其后的语句不执行(只对当前行有效)。

Page 10: 第  二  篇 Matlab

二、 Matlab 语言1 .逻辑判断符

>= <= > < == ~=isequal 函数

2 .逻辑运算符& | ~

3 .条件语句 ① if-else 语句 ② switch-case 语句

Page 11: 第  二  篇 Matlab

4 .循环语句 ① for 语句 ② while 语句

三、编程技巧1. 调试程序2. 输入输出参数

nargin 、 nargout

Page 12: 第  二  篇 Matlab

第三章 Matlab 图形处理一、二维图形 1. 基本二维图形

Plot 用法如下:a. Plot (X)b. Plot (X,Y)c. Plot (X1,Y1,X2,Y2,…) d. Plot (X1,Y1,LineSpec1,X2,Y2, X3,Y3,

…)

Page 13: 第  二  篇 Matlab

fPlot 在指定的范围 limits 内画出一元函数 y=f (x) 的图形用法: fplot('function',limits)

注意:函数 function 必须是一个 M 文件函数或者是一个包含变量 x ,且能用函数 eval 计算的字符串。例:在同一坐标系下绘制 tgx 和的 sinx 图形fplot(‘[tan(x),sin(x)]’,[-1,1,0,2*pi])

注意坐标系调整函数 axis 的作用和用法

Page 14: 第  二  篇 Matlab

其中参数 LineSpec 定义线条的属性。 Matlab 中可以对线条定义如下的特性:

a. 线型: -( 实线 ) -- ( 划线 ) :(点线 ) -. (点划线 )

b. 颜色c. 标记类型d. 标记大小: Markersize

Page 15: 第  二  篇 Matlab

2. 图形标注title 为图形添加标题xlabel 为 x轴加标注ylabel 为 y轴加标注text 在指定位置上添加文本字符串gtext 用鼠标在图形上放置文本legend 为图形添加图例

Page 16: 第  二  篇 Matlab

3. 特殊二维图形polar 画极坐标形式函数 r = f (θ) 的极坐标图

用法如下:polar(theta,rho,LineSpec) 例: t = 0:.01:2*pi;

polar(t,sin(3*t).*cos(2*t),'--r')

4. 其它二维图形pie 用 x 中的数据画一饼形图

Page 17: 第  二  篇 Matlab

semilogx x轴对数图形loglog 双对数图形bar 用二维垂直条形显示向量或矩阵中的值barh 用二维水平条形显示向量或矩阵中的值hist 二维条形直方图,可以显示出数据的分 配情形

Page 18: 第  二  篇 Matlab

二、三维图形 1. 曲面与网格图形命令

mesh 生成由 X , Y 和 Z 指定的网线面在使用该命令前应先用 meshgrid 函数生成可用 于计算函数值的矩阵网格。

通常用法如下:[X,Y ]=meshgrid(a)

Z= f (X,Y)

mesh(X,Y,Z)

Page 19: 第  二  篇 Matlab

2. 三维图形的其它形式contour 曲面的等高线图pie3 三维饼图surf 在矩形区域内显示三维带阴影曲面图quiver 矢量图或速度图surfnorm 计算与显示三维曲面的法线

Page 20: 第  二  篇 Matlab

第四章 Matlab应用一、多项式运算

创建、求值、求根、特征多项式、求导二、极限

limit (F, x, a, ‘right’ )

x趋向于 a时 F 的极限三、导数

diff (S, v, n)

Page 21: 第  二  篇 Matlab

四、积分 1. 符号积分

a. 不定积分 int (S, v)

b. 定积分 int (S, v, a,b)

2. 数值积分a. 一元函数 quad ( fun,a,b) 自适应 Simpson 法 trapz ( X, Y ) 梯形法

Page 22: 第  二  篇 Matlab

b. 二元函数dblquad ( fun,xmin,xmax,ymin,ymax)

在矩形区域 [xmin,xmax,ymin,ymax] 上计算二元函数 z=f (x,y) 的二重积分quad2ggen ( fun,xlower,xupper,ylower,yupper)

在任意区域 [xlower,xupper,ylower,yupper] 上计算二元函数 z=f (x,y) 的二重积分

Page 23: 第  二  篇 Matlab

五 . 拟合和插值1.多项式拟合: polyfit ( x, y , n)

2.插值:a. interp1( X,Y,xi,method) 一维数据插值b. interp2( X,Y,Z,xi, yi,method) 二维数据插值

method 可取下列值:linear 线性插值spline 三次样条插值cubic 三次插值

Page 24: 第  二  篇 Matlab

例:已知 1900年到 2010年每隔十年的数据如下:75.995 91.972 105.711 123.203 131.669 150.697

179.323 203.212 226.505 249.633 256.344 267.893

用插值法求 1995年的数据。

Page 25: 第  二  篇 Matlab

六、方程(组)求解 1. 方程(组)的符号解

solve (eq) 求方程的符号解solve (eq1,eq2,…eqn) 求方程组的符号解例:solve('x^2+3x-6')solve('-x^2*y+3*x-6','x+y^2-1')

2. 方程(组)的数值解fzero (fun,x0) 用数值方法求方程根

Page 26: 第  二  篇 Matlab

七、积分变换 1. Fourier积分变换

F = fourier( f ) 对符号单值函数 f 中的缺省变量 x (由命令 findsym确定)计算 Fourier 变换形式例:syms xf = sin(x)*exp(-x.^2)F = fourier(f)

注:用 eval 函数计算得出的表达式f = ifourier(F) 逆 Fourier积分变换Y = fft(X) 快速 Fourier 变换

Page 27: 第  二  篇 Matlab

2. Laplace 变换L = laplace(F) 输出参量 L = L(s) 为有缺省符号自变量 t 的标量符号对象 F 的 Laplace 变换例:syms tf1= sqrt(t); L1 = laplace(f)

F = ilaplace(L) 逆 Laplace 变换3. Z 变换

F = ztrans(f ) 对缺省自变量为 n 的单值函数f 计算 z- 变换

Page 28: 第  二  篇 Matlab

八、求解微分方程(组) 1. 常微分方程(组)符号解

dsolve(eq1,eq2,… ) 缺省独立变量为 t

例:dsolve(‘Dy=1+y^2’,’y(0)=1’)dsolve('D3u=u','u(0)=1','Du(0)=-1',

'D2u(0)=pi')

2. 常微分方程(组)数值解ode45 、 ode23 、 ode113 、 ode15s 、 ode23s 、

de23t 、ode23tb

Page 29: 第  二  篇 Matlab

3. 偏微分方程数值解 ① assempde 单的 Poission 方程(一类特殊的椭圆型方程),能求解的方程形如:

0u1u

G

2}1yx)y,x{(G 22

② hyperbolic 仅能求解如下形式的双曲型方程:

0tu

0u

0zu

yu

xu

tu

0t

0t

2

2

2

2

2

2

2

2

}1z,y,x0)z,y,x{(G

Page 30: 第  二  篇 Matlab

③ parabolic 仅能求解如下形式的抛物型方程:

0u

0zu

yu

xu

tu

G

2

2

2

2

2

2

}1z,y,x0)z,y,x{(G

Page 31: 第  二  篇 Matlab

十、极值问题(优化工具箱)方程数值解 1. 无条件极值问题

fminunc ( fun, x0 ,options)

)12424()(min 221

22

21

1 xxxxxexf x

x例:

2. 条件极值问题fmincon ( fun, x0 ,options)

01005.1

21

2121

xxxxxx在上例中限定:

Page 32: 第  二  篇 Matlab

fsolve(fun,x0) 用数值方法求方程根 例:求下列方程的根

2

1

x21

x21

ex2x

exx2

解:先建立方程函数文件,并保存为 myfun.mfunction F = myfun(x)F = [2*x(1) - x(2) - exp(-x(1)); -x(1) + 2*x(2) - exp(-x(2))];然后调用优化程序x0 = [-5; -5]; % 初始点[x,fval] = fsolve(@myfun,x0,optimset('fsolve'))

Page 33: 第  二  篇 Matlab

第五章 Matlab 的外部接口本章主要包括两部分内容: 在 VC 中调用 Matlab

在 Matlab 中调用 C 程序用 C 语言编写Matlab 的 MEX 程序

1. 用 mcc将 .m 文件翻译为 cpp源文件,然后调用2. 在 VC 中直接调用 Matlab 的 C++ Math Librar

y

3. 利用 Matcom ( MIDEVA)

Page 34: 第  二  篇 Matlab

一、编程环境1. 开发时必需的文件 %Matlab%\extern 整个目录是开发的必需目录 %Matlab%\extern\include\*.h 目录 %Matlab%\extern\include\cpp\*.hpp 目录 %Matlab%\extern\lib\win32\*.lib目录 %Matlab%\extern\lib\win32\microsoft\msvc60\*.lib目录

Page 35: 第  二  篇 Matlab

2. VC6 的设置○设置 include搜索目录

加入 c/c++ math 和 c/c++ graphics 的头文件 Tools->Options->Directories->Include files 中加入: %Matlab%\extern\include\cpp\ 和 %Matlab%\extern\inc

lude\

○定义预处理宏MSVC 、 MSWIND

Project->Setting->C/C++页中的 Category->Preprocessor 中加入 MSVC 、 MSWIND

Page 36: 第  二  篇 Matlab

○加入 lib 文件 Project ->Add to Project ->Files… 中加入: %Matlab%\extern\lib\win32\microsoft\

msvc60\*.lib

以及%Matlab%\extern\lib\win32\libmatpm.lib

○设置运行时动态链结库Project->Setting->C/C++页中的 Category->Code

Generation 中选择Multithreaded DLL 。

Page 37: 第  二  篇 Matlab

3 . 运行时 (发布 )所需文件 %MATLAB%\extern\lib\win32\mglinstaller.exe 所生成的 *.dll

Page 38: 第  二  篇 Matlab

Matlab 运算符 C++ 运算符 C++ 函数+ + plus( )- - minus( )* * mtimes( )/ / mrdivide( )\ 无 mldivide( )^ ^ mpower( ).* 无 times( )./ 无 rdivide( ).\ 无 ldivide( ).^ 无 power( )‘ 无 ctranspose( )

Page 39: 第  二  篇 Matlab

C++ Math Library 中的函数传递DECLARE_FEVAL_TABLE

FEVAL_ENTRY(myfun)

END_FEVAL_TABLE