1 / 39

第 二 篇 Matlab

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

lynton
Download Presentation

第 二 篇 Matlab

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 二 篇Matlab

  2. 第一章 矩阵及其基本运算 一、矩阵的表示 1.实数值矩阵生成 2.复数矩阵生成 3. 符号矩阵的生成 用sym函数或syms函数 4. 大矩阵的生成 .m文件、数据文件的读入

  3. 5. 特殊矩阵的生成 全零阵、全1阵、单位阵:zeros,eye,ones 随机矩阵: 均匀分布: rand 标准正态分布: randn 线性等分向量: linspace Hilbert矩阵: hilb 魔方矩阵: magic

  4. 二、矩阵操作 1.取矩阵中的元素 2.增加及删除矩阵中的元素 3.矩阵的旋转与变形 三、矩阵运算 1. 加减法运算 2. 乘法运算

  5. ① 向量乘法 ② 矩阵乘法 ③ 数组乘法(数乘) 3. 集合运算 并:union返回a、b的并集,即c = a∪b 交:intersect返回向量a、b的公共部分,即c= a∩b 差:setdiff返回属于a但不属于b的不同元素的集合,C = a-b 交集的非:setxor

  6. 检测集合中的元素:ismember 4. 除法运算 A / B 5. 矩阵乘方 exp(A) :EA 6. 矩阵函数 expmlogmsqrtm

  7. 7. 方阵的行列式: det 8. 方阵的逆: inv 9. 矩阵的迹: trace 10. 矩阵的秩: rank 11. 矩阵和向量的范数 norm欧几里德范数 norm(x,inf ) 无穷范数

  8. 四、矩阵分解 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成立 五、其它 二次型、秩与线性相关性、稀疏矩阵

  9. 第二章 Matlab语言基础 一、M文件 1.脚本文件:在Matlab的工作空间内对数据进行操作。 2.函数文件:可接受输入参数并返回输出参数,其内的变量不占用Matlab工作空间,第一行包含function 注: M文件的调用以文件名为准。 %为Matlab的注释符,其后的语句不执行(只对当前行有效)。

  10. 二、Matlab语言 1.逻辑判断符 >= <= > < == ~= isequal函数 2.逻辑运算符 & | ~ 3.条件语句 ① if-else语句 ② switch-case语句

  11. 4.循环语句 ① for语句 ② while语句 三、编程技巧 1.调试程序 2.输入输出参数 nargin、nargout

  12. 第三章 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, …)

  13. 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的作用和用法

  14. 其中参数LineSpec定义线条的属性。Matlab中可以对线条定义如下的特性:其中参数LineSpec定义线条的属性。Matlab中可以对线条定义如下的特性: a. 线型: -(实线) -- (划线) :(点线) -. (点划线) b. 颜色 c. 标记类型 d. 标记大小:Markersize

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

  16. 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中的数据画一饼形图

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

  18. 二、三维图形 1. 曲面与网格图形命令 mesh 生成由X,Y和Z指定的网线面 在使用该命令前应先用meshgrid函数生成可用 于计算函数值的矩阵网格。 通常用法如下: [X,Y ]=meshgrid(a) Z= f (X,Y) mesh(X,Y,Z)

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

  20. 第四章 Matlab应用 一、多项式运算 创建、求值、求根、特征多项式、求导 二、极限 limit (F, x, a, ‘right’ ) x趋向于a时F的极限 三、导数 diff (S, v, n)

  21. 四、积分 1. 符号积分 a. 不定积分 int (S, v) b. 定积分 int (S, v, a,b) 2. 数值积分 a. 一元函数 quad ( fun,a,b) 自适应Simpson法 trapz ( X, Y ) 梯形法

  22. 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)的二重积分

  23. 五. 拟合和插值 • 多项式拟合: polyfit ( x, y, n) • 插值: • a. interp1( X,Y,xi,method) 一维数据插值 • b. interp2( X,Y,Z,xi, yi,method) 二维数据插值 • method 可取下列值: • linear 线性插值 • spline 三次样条插值 • cubic 三次插值

  24. 例:已知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年的数据。

  25. 六、方程(组)求解 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) 用数值方法求方程根

  26. 七、积分变换 1. Fourier积分变换 F = fourier( f ) 对符号单值函数 f 中的缺省变量 x(由命令findsym确定)计算Fourier变换形式 例: syms x f = sin(x)*exp(-x.^2) F = fourier(f) 注:用eval函数计算得出的表达式 f = ifourier(F)逆Fourier积分变换 Y = fft(X) 快速Fourier变换

  27. 2. Laplace变换 L = laplace(F)输出参量L = L(s)为有缺省符号自变量t的标量符号对象F的Laplace变换 例: syms t f1= sqrt(t); L1 = laplace(f) F = ilaplace(L)逆Laplace变换 3. Z变换 F = ztrans(f )对缺省自变量为n的单值函数f计算z-变换

  28. 八、求解微分方程(组) 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

  29. 3. 偏微分方程数值解 ① assempde 单的Poission方程(一类特殊的椭圆型方程),能求解的方程形如: ② hyperbolic 仅能求解如下形式的双曲型方程:

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

  31. 十、极值问题(优化工具箱)方程数值解 1. 无条件极值问题 fminunc ( fun, x0 ,options) 2. 条件极值问题 fmincon ( fun, x0 ,options)

  32. fsolve(fun,x0) 用数值方法求方程根 例:求下列方程的根 • 解:先建立方程函数文件,并保存为myfun.m • function 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'))

  33. 第五章 Matlab的外部接口 • 本章主要包括两部分内容: • 在VC中调用Matlab • 用mcc将.m文件翻译为cpp源文件,然后调用 • 在VC中直接调用Matlab的C++ Math Library • 利用Matcom(MIDEVA) • 在Matlab中调用C程序 用C语言编写Matlab的MEX程序

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

  35. 2. VC6的设置 ○设置include搜索目录 加入c/c++ math和c/c++ graphics的头文件 Tools->Options->Directories->Include files 中加入: %Matlab%\extern\include\cpp\和%Matlab%\extern\include\ ○定义预处理宏MSVC、MSWIND Project->Setting->C/C++页中的Category->Preprocessor 中加入 MSVC、MSWIND

  36. ○加入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。

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

  38. C++ Math Library 中的函数传递 DECLARE_FEVAL_TABLE FEVAL_ENTRY(myfun) END_FEVAL_TABLE

More Related