2008-03-04

MatLab

  C和MatLab都是学校安排的课程,虽然并非自发的需求学习,但是既然是课程,学好也是应该的,这个分类就作为手册式的信息快速查找用吧。
---------------------------------------------------------------
说明:
MatLab中的注释用%
变量可以直接赋值。若用户无赋值则使用系统内置的变量ans
内置变量realmax、realmin、Inf和NaN用于浮点计算中的异常处理。realmax和realmin是以双精度数储存在计算机中的最大值和最小值。变量Inf表示“Infinity”,NaN表示“not a number ”
以下是系统自带变量的简表:

变量名     含义
ans       当表达式的值未赋给某个变量时, 系统自动将它赋给ans
eps       浮点数精度
i,j        单位虚数
pi        圆周率
realmax     最大正浮点数
realmin      最小正浮点数
Inf        无穷大
NaN       不是一个数,例如 0/0的数值
---------------------------------
MatLab内置的函数:


名称         函数
三角函数 sin cos tan cot
反三角函数 asin acos atan acot
开平 sqrt
以e为底的指数 exp
自然对数 log
以10为底的对数 log10
绝对值或共轭复数 abs
符号函数 sign
元素和 sum
求多项式的根 root(c)
----------------------
矩阵与向量
行向量与列向量可以通过转置来实现,转置运算符为“’”如:a=[1,4,5];a=a'
输出:
a =
1
4
5
-------------------------
  diag命令既可以用于创建对角矩阵,也可以用于引用对角线上的元素,创建对角阵时,要求输入的变量为一个向量,这个向量可以先定义,也可以在输入的参数中直接定义,下面的两个命令得到的都是同一个结果:
>>M=diag([1 2 3])
>>a=[1 2 3];M=diag(a)
M=
1 0 0
0 2 0
  0 0 3
要引用矩阵对角线上的元素,同样可以使用diag函数,此时输入的变量为一个矩阵名: >>w=diag(M)
----------------------------
处理矩阵的函数

函数 返回值
diag 对角矩阵或对角阵中对角线上元素值的索引
eye 单位矩阵
ones 全1矩阵
rand 随机矩阵
zeros 全0矩阵
length 返回向量中元素的个数
size 返回矩阵的行数与列数
reshape 矩阵的变维
----------------------------------
单位阵函数的用法:
eye(n) n阶单位阵
eye(m,n) mn的单位阵(即主元为1,其余元素为零)
eye(size(A)) 与A同阶的单位阵
------------------------
reshape(被变矩阵,新矩阵的行数,新矩阵的列数)
-----------------------
冒号运算符:
 可用于创造变量或和下标一起引用矩阵中的元素,使用冒号运算符创建向量有两种形式:
v=start:end
v=start:step:end
 如果要创建列向量可以加个'号,比如:A=(1:5);可以创建一个列向量(1 2 3 4 5)’
-----------------------------
 冒号运算符也能作为通配符来引用行向量或列向量,例如A(:,1)表示引用矩阵A的第一列,而A  (2,:)表示引用矩阵的第二行,A(2:4,1)表示引用矩阵的第2行到第4行的第1个元素。
 B(1,:)=2:2:8表示将矩阵B的第一行赋值为2 4 6 8
-----------------------------
除此之外,冒号运算符还可以将矩阵转化为列向量,例如:
>>E=[1 4;2 5;3 6]; % 定义一个32的矩阵
>>v=E(:) % 得到一个列向量v=[1 2 3 4 5 6]’
>>w=E(:)’ % 得到一个行向量w=[1 2 3 4 5 6]
--------------------
删除元素
通过给矩阵中的元素赋空值的办法可以删除单个元素或一组元素。当定义一个向量x后,使用x=[]可以清除x中的所有元素,用下标能够清除所选定的元素,例如:
>>x=1:5; % 创建一个含有5个元素的行向量
>>x(3)=[] % 给第3个元素赋空值,使其被删掉
x=
1 2 4 5
冒号运算符可以删除一组元素,例如将上面的命令改为x(2:3)=[]将删除第2个和第3个元素,命令x(1:2:5)=[]会删除1、3、5位置的3个元素,即步长为2。
如果要对矩阵进行删除操作,则至少要删除一整行或一整列,例如,命令A(:,1)=[]表示删除了矩阵A的第1列。
--------------------------------
矩阵的运算
如下表,有几点需要注意:
(1)A的n次幂相当于n个A连乘,这要求A必须是方阵;
(2)求向量的内积的命令dot中含有两个参数a和b,如果a和b同为向量,则不管它们是否同为行向量或列向量,都按照求内积的方法求值,若a和b同为矩阵,则按照他们的列向量作内积。
含义       命令
矩阵的左除和右除     A\B=B、A/B=A
矩阵的幂       A^n
转置        A’
求向量的内积      dot(a,b)
求方阵A的特征多项式    poly(A)
求方阵A的行列式的值    det(A)
求矩阵A的迹      trace(A)
求非奇异方阵A的逆矩阵    inv(A)
求方阵A的特征值和特征向量   eig(A)
生成符号矩阵      sym
----------------------------
向量化和数组运算符
Matlab中所有的内置函数都已经向量化,也就是说,给定输入向量后,函数对向量中的所有元素进行操作。
  在计算表达式y=cos(x)的值时,cos函数对x中的每一个元素都进行运算,最后得到的y是一个向量。
  为了支持向量化,Matlab中定义了一个新的运算符,叫做数组运算符,它对两个行数、列数相等的矩阵或向量的相应元素进行运算。计算结果是产生和这两个矩阵有相同行数和列数的新矩阵。数组运算符是用句号“.”和传统的运算符“*”、“/”等组合。点乘写作“.*”,点除写作“./”

没有评论: