This is my blog.
MATLAB其实与C还是挺像的,感觉就是在读英文,但有些地方可能更方便一些吧!
然而因为这些方便,有些蹩脚呢!
所以说明,没怎么好好学习呢!
看了一遍一遍,发现不动手,就是很容易忘记(我的记忆力,估计是被黑夜吃了吧)
虽然可以现场查,但最好有个印象吧!
所以决定记笔记,相比于笔头的,我更喜欢敲下来(是因为更快吗?也可能是培养手感吧)
还是先写点基础的基础吧!
计算基础
默认常量
pi、eps、INF(inf)、i(j)、NaN(nan)、nargin、narout、realmax、realmin、ANS(ans)
显示格式
format short、format long、format short e、format long e、format bank、format hex
数据类型
(u)int(8、16、32)、real(single,double)、字符串(‘’)、复数型(imag、real、abs、angle)、单元数组、结构体;
注:c(1,:) c的第一行 c(:,2) c的第二列
矩阵
创建
冒号创建一维数组
|
|
linspace创建一维数组
|
|
logspace创建一维数组
|
|
特殊矩阵(之后补性质)
ones
eye(注意没有s,且ones是全1,而eye是单位矩阵,别搞混了)
zeros
magic(每一行每一列元素之和都相等)
rand(均匀分布)
randn(正态分布)
hilb(其元素A(i,j)=1/(i+j-1))
vander(其元素A(i,j)=(αi)^(j-1),且矩阵具有最大的秩min(m, n))
hankel(每一条副对角线上的元素都相等的方阵)
handamard(由+1和-1元素构成的正交方阵)
删除
|
|
修改
元素修改
|
|
结构修改
|
|
数据修改
floor
ceil
round(四舍五入)
fix(离0近的方向取整)
下标的引用
矩阵信息
矩阵的结构
isempty(A)
isscalr(A) [是否是标量]
isvector(A) [是否是单元的标量矩阵]
issparse(A) [检测数组是否为稀疏矩阵]
矩阵的大小
dims(X) [维数]
length(X) [最长维的长度]
[m,n]=size(X) [矩阵各维上的长度]
numel(X) [元素的个数]
矩阵的数据类型
isnumeric
isreal
ischar
isstruct
isfloat
iscell
isinteger
islogical
iscellstr
矩阵的运算
算术运算
+ - * / \ ^
注 A*X=B X=A\B
其他:rem(A,B)[求余]与mod(A,B)[取模]
当A,B同号时,rem(A,B)==mod(A,B)
当A,B异号时,mod(A,B)==rem(A,B)+B
运算函数
A为矩阵
A’
inv(A)
length(A)
以下的A可为向量和矩阵
sum(A) [各列元素之和]
prod(A) [各列元素之积]
max(A)
min(A)
mean(A) [各列元素的平均值]
群运算
运算符前加'.'
群函数
sin cos
tan abs
sqrt angle
real imag
conj [复数的共轭] exp [以e为底的指数]
log [以e为底的对数] log10
关系运算
关系操作符 | 对应函数 |
---|---|
== | eq(A,B) |
~= | ne(A,B) |
< | lt(A,B) |
> | gt(A,B) |
<= | le(A,B) |
>= | ge(A,B) |
逻辑运算
逻辑操作符 | 对应函数 | ||
---|---|---|---|
& | and(A,B) | ||
` | ` | or(A,B) | |
~ | nor(A,B) | ||
` | ` | ||
&& |
矩阵的其他操作
find(A) [非零]
sort(A,mode) [mode默认为ascend]
cumsum(A,dim) [求和]
cumprod(A,dim)[求积]
diff(X,n,dim) [求相邻元素的差,dim默认为1,列差分]
矩阵的分析
范数
norm(v,p) [p>1,默认p为2,返回p阶范数]
normest(S,tol) [估计S的二阶范数,以tol为允许误差,默认为1e-6]
条件数
描述线性方程Ax=b的解对b中的误差或不确定性的敏感的度量就是矩阵A的条件数,
k=||A^-1||·||A||
cond(X,p)
当p=’fro’时,指的是矩阵Frobenius范数[对应元素的平方和再开方]下的条件数
rcond(A) 条件数的倒数
当矩阵为病态时,接近0;否则,接近1
化零矩阵
null(A)
null(A,’r’) 有理形式的化零矩阵
秩
rank(A,tol)
行列式
det(A)
迹
矩阵对角元素之和
trace(A)
逆和伪逆
inv(A)
pinv(A,tol)
正交空间
B=orth(A)
B的列向量组成了A的一组标准基
约化行阶梯矩阵
rref(A,tol)
向量空间的夹角
subspace(A,B)
值越小,线性相关度越高
矩阵的分解
特征值的分解
d=eig(A) d是由A的所有特征值组成的列向量
[V,D]=eig(A) D的对角线是由A的所有特征值组成的;V相应的列向量是相应的特征向量
[V,D]=eig(A,B,flag) flag可能为’chol’[A为对称Hermite矩阵],’qz’算法[A为非对称Hermite矩阵或非Hermite矩阵]。
注Hermite即自共轭矩阵。矩阵中每一个第i行第j列的元素都与第j行第i列的元素的共轭相等
Cholesky分解
对称正定矩阵的分解
chol(A)==chol(A,’upper’) 上三角矩阵
chol(A,’lower’)
LU分解
高斯消去法
[L,U]=lu(A) L单位下三角矩阵 U单位上三角矩阵
det(A)=det(L)det(U)
inv(A)=inv(U)inv(L)
正交分解
分解为一个正交矩阵Q(mm)和一个上三角矩阵R(mn)
[Q,R]=qr(A)
[C,R]=qr(A,B) 计算Ax=b的最小二乘解
Schur分解
(没看懂……)
[U,T]=schur(A,…)
U 酉矩阵 T schur矩阵
奇异值分解
(没看懂……)
[U,S,V]=svd(X)
海森伯格分解
次对角线以下均为0的矩阵称为海森伯格矩阵
[P,H]=hess(A) A=PHP
Jordan标准形
其对角为特征值,
[V,J]=jordan(A)
稀疏矩阵
创建
sparse(m,n) sparse(A)
speye(m,n)
spones(X)
sprand(X) 均匀分布的
sprandn(X) 高斯分布的
sprandsym(X) 高斯分布的对称的
spdiags(X) 对角的
spalloc(X) 分配空间
操作
nnz(X) 非零存储单元个数
nonzeros(A) 非零元素按列顺序构成的列向量
nzmax(X) 非零存储单元个数
spy 稀疏矩阵可视化
转载请注明出处,谢谢。
愿 我是你的小太阳