第 二 篇
Matlab
第一章 矩阵及其基本运算一、矩阵的表示
1.实数值矩阵生成
2.复数矩阵生成
3,符号矩阵的生成用 sym函数或 syms函数
4,大矩阵的生成
.m文件、数据文件的读入
5,特殊矩阵的生成全零阵、全 1阵、单位阵,zeros,eye,ones
随机矩阵:
均匀分布,rand
标准正态分布,randn
线性等分向量,linspace
Hilbert矩阵,hilb
魔方矩阵,magic
二、矩阵操作
1.取矩阵中的元素
2.增加及删除矩阵中的元素
3.矩阵的旋转与变形三、矩阵运算
1,加减法运算
2,乘法运算
① 向量乘法
② 矩阵乘法
③ 数组乘法(数乘)
3,集合运算并,union 返回 a,b的并集,即 c = a∪ b
交,intersect 返回向量 a,b的公共部分,即 c= a∩b
差,setdiff 返回属于 a但不属于 b的不同元素的集合,C = a-b
交集的非,setxor
检测集合中的元素,ismember
4,除法运算
A / B
5,矩阵乘方
exp(A),EA
6,矩阵函数
expm logm sqrtm
7,方阵的行列式,det
8,方阵的逆,inv
9,矩阵的迹,trace
10,矩阵的秩,rank
11,矩阵和向量的范数
norm 欧几里德范数
norm(x,inf ) 无穷范数四、矩阵分解
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成立五、其它二次型、秩与线性相关性、稀疏矩阵第二章 Matlab语言基础一,M文件
1.脚本文件:在 Matlab的工作空间内对数据进行操作。
2.函数文件:可接受输入参数并返回输出参数,其内的变量不占用 Matlab工作空间,第一行包含 function
注,M文件的调用以文件名为准。
%为 Matlab的注释符,其后的语句不执行(只对当前行有效)。
二,Matlab语言
1,逻辑判断符
>= <= > < == ~=
isequal函数
2,逻辑运算符
& | ~
3.条件语句
① if-else语句
② switch-case语句
4.循环语句
① for语句
② while语句三、编程技巧
1.调试程序
2.输入输出参数
nargin,nargout
第三章 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,…)
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的作用和用法其中参数 LineSpec定义线条的属性。 Matlab
中可以对线条定义如下的特性:
a,线型,-(实线 ) -- (划线 ),(点线 ) -,(点划线 )
b,颜色
c,标记类型
d,标记大小,Markersize
2,图形标注
title 为图形添加标题
xlabel 为 x轴加标注
ylabel 为 y轴加标注
text 在指定位置上添加文本字符串
gtext 用鼠标在图形上放置文本
legend 为图形添加图例
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中的数据画一饼形图
semilogx x轴对数图形
loglog 双对数图形
bar 用二维垂直条形显示向量或矩阵中的值
barh 用二维水平条形显示向量或矩阵中的值
hist 二维条形直方图,可以显示出数据的分配情形二、三维图形
1,曲面与网格图形命令
mesh 生成由 X,Y和 Z指定的网线面在使用该命令前应先用 meshgrid函数生成可用于计算函数值的矩阵网格 。
通常用法如下:
[X,Y ]=meshgrid(a)
Z= f (X,Y)
mesh(X,Y,Z)
2,三维图形的其它形式
contour 曲面的等高线图
pie3 三维饼图
surf 在矩形区域内显示三维带阴影曲面图
quiver 矢量图或速度图
surfnorm 计算与显示三维曲面的法线第四章 Matlab应用一、多项式运算创建、求值、求根、特征多项式、求导二、极限
limit (F,x,a,‘right’ )
x趋向于 a时 F的极限三、导数
diff (S,v,n)
四、积分
1,符号积分
a,不定积分 int (S,v)
b,定积分 int (S,v,a,b)
2,数值积分
a,一元函数
quad ( fun,a,b) 自适应 Simpson法
trapz ( X,Y ) 梯形法
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)的二重积分五,拟合和插值
1,多项式拟合,polyfit ( x,y,n)
2,插值:
a,interp1( X,Y,xi,method) 一维数据插值
b,interp2( X,Y,Z,xi,yi,method) 二维数据插值
method 可取下列值:
linear 线性插值
spline 三次样条插值
cubic 三次插值例:已知 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年的数据。
六、方程(组)求解
1,方程(组)的符号解
solve (eq) 求方程的符号解
solve (eq1,eq2,…eq n) 求方程组的符号解例:
solve('x^2+3x-6')
solve('-x^2*y+3*x-6','x+y^2-1')
2.方程(组)的数值解
fzero (fun,x0) 用数值方法求方程根七、积分变换
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变换
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-变换八、求解微分方程(组)
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
3,偏微分方程数值解
① assempde 单的 Poission方程(一类特殊的椭圆型方程),能求解的方程形如:

0u
1u
G
2
}1yx)y,x{(G 22
② hyperbolic 仅能求解如下形式的双曲型方程:

0
t
u
0u
0
z
u
y
u
x
u
t
u
0t
0t
2
2
2
2
2
2
2
2
}1z,y,x0)z,y,x{(G
③ parabolic 仅能求解如下形式的抛物型方程:





0u
0
z
u
y
u
x
u
t
u
G
2
2
2
2
2
2
}1z,y,x0)z,y,x{(G
十、极值问题(优化工具箱) 方程数值解
1,无条件极值问题
fminunc ( fun,x0,options)
)12424()(m i n 22122211 xxxxxexf xx例:
2,条件极值问题
fmincon ( fun,x0,options)
010
05.1
21
2121


xx
xxxx在上例中限定:
fsolve(fun,x0) 用数值方法求方程根例:求下列方程的根
2
1
x
21
x
21
ex2x
exx2


解:先建立方程函数文件,并保存为 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'))
第五章 Matlab的外部接口本章主要包括两部分内容:
在 VC中调用 Matlab
在 Matlab中调用 C程序用 C语言编写 Matlab的 MEX程序
1,用 mcc将,m文件翻译为 cpp源文件,然后调用
2,在 VC中直接调用 Matlab的 C++ Math Library
3,利用 Matcom( MIDEVA)
一、编程环境
1,开发时必需的文件
%Matlab%\extern 整个目录是开发的必需目录
%Matlab%\extern\include\*.h 目录
%Matlab%\extern\include\cpp\*.hpp 目录
%Matlab%\extern\lib\win32\*.lib目录
%Matlab%\extern\lib\win32\microsoft\msvc60\*.lib目录
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
○ 加入 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。
3,运行时 (发布 )所需文件
%MATLAB%\extern\lib\win32\mglinstaller.exe
所生成的 *.dll
Matlab运算符 C++运算符 C++函数
+ + plus( )
- - minus( )
* * mtimes( )
/ / mrdivide( )
\ 无 mldivide( )
^ ^ mpower( )
.* 无 times( )
./ 无 rdivide( )
.\ 无 ldivide( )
.^ 无 power( )
‘ 无 ctranspose( )
C++ Math Library 中的函数传递
DECLARE_FEVAL_TABLE
FEVAL_ENTRY(myfun)
END_FEVAL_TABLE