MATLAB 基础知识

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的第二列

矩阵

创建

冒号创建一维数组

1
2
3
4
>> A=1:5 %默认步长为1,可以小于0
A=1 2 3 4 5
>> B=2.6:2:11.2
B=2.6 4.6 6.6 8.6 10.6

linspace创建一维数组

1
>>A=linespace(a,b,n) %从a开始到b为止,创建n个数,构成等差数列,n<2返回b的值,n默认100

logspace创建一维数组

1
>>A=logpace(a,b,n) %从10^a开始到10^b为止,创建n个数,构成等差数列,并返回n个以10为底的幂构成的行向量,n<默认50

特殊矩阵(之后补性质)

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元素构成的正交方阵)

删除

1
>>A=(:,2)=[] %删除第二列

修改

元素修改

1
2
3
4
5
>>X=diag(v,k)
%k=0主对角线,k<0主对角线以下,将v的元素放在X的第k对角线上,若k为小数,自动把小数部分抹去
>>v=diag(X,k) %v列向量
>>L=tril(X,k) %第k对角线下部分,其余用0补齐,默认为0
>>U=triu(X,k) %第k对角线上部分

结构修改

1
2
3
4
>>reshape(B,m,n,p) %B重置数组,m、n、p行、列、页数
>>rot90(A,K) %将A逆时针旋转90˚的k倍,k默认为1
>>fliplr(A) %将A左右翻转
>>flipud(A) %将A上下翻转

数据修改

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 稀疏矩阵可视化

转载请注明出处,谢谢。

愿 我是你的小太阳



买糖果去喽