Matlab常用命令

Matlab常用命令,第1张

Matlab常用命令汇总

记住Matlab中一些常用的命令,对于我们学习EDA来说用处很大!下面我为大家整理了关于Matlab的常用命令,希望对你有所帮助。

一、常用对象 *** 作:除了一般windows窗口的常用功能键外。

1、!dir 可以查看当前工作目录的文件。 !dir& 可以在dos状态下查看。

2、who 可以查看当前工作空间变量名, whos 可以查看变量名细节。

3、功能键:

功能键 快捷键 说明

方向上键 Ctrl+P 返回前一行输入

方向下键 Ctrl+N 返回下一行输入

方向左键 Ctrl+B 光标向后移一个字符

方向右键 Ctrl+F 光标向前移一个字符

Ctrl+方向右键 Ctrl+R 光标向右移一个字符

Ctrl+方向左键 Ctrl+L 光标向左移一个字符

home Ctrl+A 光标移到行首

End Ctrl+E 光标移到行尾

Esc Ctrl+U 清除一行

Del Ctrl+D 清除光标所在的字符

Backspace Ctrl+H 删除光标前一个字符

Ctrl+K 删除到行尾

Ctrl+C 中断正在执行的命令

4、clc可以命令窗口显示的内容,但并不清除工作空间。

二、函数及运算

1、运算符:

+:加, -:减, :乘, /: 除, :左除 ^: 幂,‘:复数的共轭转置, ():制定运算顺序。

2、常用函数表:

sin( ) 正弦(变量为弧度)

Cot( ) 余切(变量为弧度)

sind( ) 正弦(变量为度数)

Cotd( ) 余切(变量为度数)

asin( ) 反正弦(返回弧度)

acot( ) 反余切(返回弧度)

Asind( ) 反正弦(返回度数)

acotd( ) 反余切(返回度数)

cos( ) 余弦(变量为弧度)

exp( ) 指数

cosd( ) 余弦(变量为度数)

log( ) 对数

acos( ) 余正弦(返回弧度)

log10( ) 以10为底对数

acosd( ) 余正弦(返回度数)

sqrt( ) 开方

tan( ) 正切(变量为弧度)

realsqrt( ) 返回非负根

tand( ) 正切(变量为度数)

abs( ) 取绝对值

atan( ) 反正切(返回弧度)

angle( ) 返回复数的相位角

atand( ) 反正切(返回度数)

mod(x,y) 返回x/y的余数

sum( ) 向量元素求和

3、其余函数可以用help elfun和help specfun命令获得。

4、常用常数的值:

pi 31415926……

realmin 最小浮点数,2^-1022

i 虚数单位

realmax 最大浮点数,(2-eps)2^1022

j 虚数单位

Inf 无限值

eps 浮点相对经度=2^-52

NaN 空值

三、数组和矩阵:

1、构造数组的方法:增量发和linspace(first,last,num)first和last为起始和终止数,num为需要的数组元素个数。

2、构造矩阵的方法:可以直接用[ ]来输入数组,也可以用以下提供的函数来生成矩阵。

ones( ) 创建一个所有元素都为1的矩阵,其中可以制定维数,1,2…个变量

zeros() 创建一个所有元素都为0的矩阵

eye() 创建对角元素为1,其他元素为0的矩阵

diag() 根据向量创建对角矩阵,即以向量的元素为对角元素

magic() 创建魔方矩阵

rand() 创建随机矩阵,服从均匀分布

randn() 创建随机矩阵,服从正态分布

randperm() 创建随机行向量

horcat C=[A,B],水平聚合矩阵,还可以用cat(1,A,B)

vercat C=[A;B],垂直聚合矩阵, 还可以用cat(2,A,B)

repmat(M,v,h) 将矩阵M在垂直方向上聚合v次,在水平方向上聚合h次

blkdiag(A,B) 以A,和B为块创建块对角矩阵

length 返回矩阵最长维的的长度

ndims 返回维数

numel 返回矩阵元素个数

size 返回每一维的长度,[rows,cols]=size(A)

reshape 重塑矩阵,reshape(A,2,6),将A变为2×6的矩阵,按列排列。

rot90 旋转矩阵90度,逆时针方向

fliplr 沿垂轴翻转矩阵

flipud 沿水平轴翻转矩阵

transpose 沿主对角线翻转矩阵

ctranspose 转置矩阵,也可用A’或A’,这仅当矩阵为复数矩阵时才有区别

inv 矩阵的逆

det 矩阵的行列式值

trace 矩阵对角元素的和

norm 矩阵或矢量的范数,norm(a,1),norm(a,Inf)……

normest 估计矩阵的最大范数矢量

chol 矩阵的cholesky分解

cholinc 不完全cholesky分解

lu LU分解

luinc 不完全LU分解

qr 正交分解

kron(A,B) A为m×n,B为p×q,则生成mp×nq的矩阵,A的每一个元素都会乘上B,并占据p×q大小的空间

rank 求出矩阵的刺

pinv 求伪逆矩阵

A^p 对A进行 *** 作

A^P 对A中的每一个元素进行 *** 作

四、数值计算

1、线性方程组求解

(1)AX=B的解可以用X=AB求。XA=B的解可以用X=A/B求。如果A是m×n的矩阵,当m=n时可以找到唯一解,mn,超定系统,至少找到一组解。如果A是奇异的,且AX=B有解,可以用X=pinv(A)×B返回最小二乘解

(2)AX=b, A=L×U,[L,U]=lu(A), X=U(Lb),即用LU分解求解。

(3)QR(正交)分解是将一矩阵表示为一正交矩阵和一上三角矩阵之积,A=Q×R[Q,R]=chol(A), X=Q(Ub)

(4)cholesky分解类似。

2、特征值

D=eig(A)返回A的所有特征值组成的矩阵。[V,D]=eig(A),还返回特征向量矩阵。

3、A=U×S×UT,[U,S]=schur(A)其中S的对角线元素为A的特征值。

4、多项式Matlab里面的多项式是以向量来表示的,其具体 *** 作函数如下:

conv 多项式的乘法

deconv 多项式的除法,a,b=deconv(s),返回商和余数

poly 求多项式的系数(由已知根求多项式的系数)

polyeig 求多项式的特征值

Polyfit(x,y,n) 多项式的曲线拟合,x,y为被拟合的向量,n为拟合多项式阶数。

polyder 求多项式的一阶导数,polyder(a,b)返回ab的导数

[a,b]=polyder(a,b)返回a/b的导数。

polyint 多项式的积分

polyval 求多项式的值

polyvalm 以矩阵为变量求多项式的值

residue 部分分式展开式

roots 求多项式的根(返回所有根组成的向量)

注:用ploy(A)求出矩阵的特征多项式,然后再求其根,即为矩阵的特征值。

5、插值常用的插值函数如下:

griddata 数据网格化合曲面拟合

Griddata3 三维数据网格化合超曲面拟合

interp1 一维插值(yi=interp1(x,y,xi,’method’)Method=nearest/linear/spline/pchip/cubic

Interp2 二维插值zi=interp1(x,y,z,xi,yi’method’),bilinear

Interp3 三维插值

interpft 用快速傅立叶变换进行一维插值,help fft。

mkpp 使用分段多项式

spline 三次样条插值

pchip 分段hermit插值

6、函数最值的求解

fminbnd(‘f’,x1,x2,optiset(,))求f在x1和x2之间的最小值。Optiset选项可以有‘Display’+‘iter’/’off’/’final’,分别表示显示计算过程/不显示/只显示最后结果。fminsearch求多元函数的最小值。fzero(‘f’,x1)求一元函数的零点。X1为起始点。同样可以用上面的选项。

五、图像绘制:

1、基本绘图函数

plot 绘制二维线性图形和两个坐标轴

plot3 绘制三维线性图形和两个坐标轴

fplot 在制定区间绘制某函数的图像。fplot(‘f’,区域,线型,颜色)

loglog 绘制对数图形及两个坐标轴(两个坐标都为对数坐标)semilogx 绘制半对数坐标图形

semilogy 绘制半对数坐标图形

2、线型: 颜色 线型

y ** 圆点线 v 向下箭头

g 绿色 - 组合 > 向右箭头

b 蓝色 + 点为加号形 < 向左箭头

m 红紫色 o 空心圆形 p 五角星形

c 蓝紫色 星号 h 六角星形

w 白色 实心小点 hold on 添加图形

r 红色 x 叉号形状 grid on 添加网格

k 黑色 s 方形 - 实线

d 菱形 -- 虚线 ^ 向上箭头

3、可以用subplot(3,3,1)表示将绘图区域分为三行三列,目前使用第一区域。此时如要画不同的图形在一个窗口里,需要hold on。

;

应为LU分解是吧矩阵分成L下三角阵和U上三角阵的乘积

但是很多时候是不能够得到刚刚好的完美的L和U

[L1,U]=lu(A)

就返回两个矩阵L1,U 是满足 L1U=A的

其中U是上三角矩阵,而得到的L1很多时候不是规则的下三角矩阵

而通过简单的矩阵行列互换 *** 作,可以将L1变为规则的下三角矩阵

然而,函数还有另外一种调用方式

[L2,U,P)=lu(A)

这个时候,L2是规则的下三角矩阵,U是规则的上三角矩阵

但是L2U不一定等于A,而是 L2U=PA

实际上PA相当于给A中的矩阵一些行列互换的 *** 作

之所以这样,原因应该是:

不是所有的矩阵一开始就能很规则的上下三角分解

有些矩阵可能需要经过矩阵的行列互换 *** 作才能最终化为规则的上下三角矩阵乘积

其实lu还有[L,U,P,Q] = lu(A),(最终PAQ

= LU)

[L,U,P,Q,R] = lu(A) (最终P(R\A)Q =

LU )

这样复杂的调用方法,用于稀疏矩阵

你的代码我帮你解释了,果然是个复杂的活,如下function hl=zhjLU(A) %函数名为zhiLU,输入矩阵A,来进行LU分解,返回值hl为A的各阶主子式的行列式[n n] =size(A);%返回矩阵A的维数

RA=rank(A); %返回矩阵A的秩if RA~=n %判断矩阵A的秩RA是否不等于A的维数n,当不等于n时,即小于n时执行if中的语句disp('请注意:因为A的n阶行列式hl等于零,所以A不能进行LU分解A的秩RA如下:'), RA,hl=det(A);%输出disp中的字符串,RA的值,hl的值(此时它的值为矩阵A的行列式)return %并且退出程序end % if end 语句块,end标志if语句结束if RA==n %判别A的秩是否等于n,当等于n时,即满秩时执行下面的语句for p=1:n%从1到n循环,主要是想获得1至n阶主子式的行列式h(p)=det(A(1:p, 1:p));%A(1:p, 1:p)为A的前p行前p列,即A的p阶主子式,从而h(p)为A的p阶主子式的值end %for语句结束标志hl=h(1:n);%把A的各阶主子式的行列式值赋给hl存储for i=1:n %从1到n循环,主要是判断各阶主子式是否为0if h(1,i)==0 %判段第i阶主子式的行列式是否为0,若为0输出下面的语句disp('请注意:因为A的r阶主子式等于零,所以A不能进行LU分解A的秩RA和各阶顺序主子式值hl依次如下:'), hl;RA%输出disp中的字符串,各阶主子式的行列式的值,以及矩阵A的秩return %当有一个为0时退出程序end %if语句结束标志end %for语句结束标志if h(1,i)~=0 %如果执行到这一句,说明上边的for循环都执行了且没有return出去,则此时i的值为n,判断第n阶行列式是否为0,即还是判断A的行列式是否不为0,若不为0则输出下面语句disp('请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解A的秩RA和各阶顺序主子式值hl依次如下:')%输出disp中的字符串for j=1:n%对1到n循环U(1,j)=A(1,j);%把A的第一行中的各个值赋给U中第一行的各个变量end%for循环结束标志for k=2:n%从第2列到第n列进行循环,即依次给LU的第k列赋值for i=2:n%从2到n循环 ,与j的循环是相互联系的,即当i>j时对下三角矩阵L赋值,当j>=i时对上三角U赋值for j=2:n%从2到n循环 ,与i的循环是相互联系的,即当i>j时对下三角矩阵L赋值,当j>=i时对上三角U赋值L(1,1)=1;L(i,i)=1; %始终保持L对角线上的元素为1if i>j %当i>j时,此时就是要对L进行赋值了,因为当i<j时,L(i,j)=0,不用管L(1,1)=1;L(2,1)=A(2,1)/U(1,1); L(i,1)=A(i,1)/U(1,1);%根据LU分解的关系知,L(i,1)处的值=A(i,1)/U(1,1),从而对L(i,1)进行赋值,即对L的第一列赋值L(i,k)=(A(i,k)- L(i,1:k-1)U(1:k-1,k))/U(k,k);%还是根据LU分解的关系L(i,k)处的值等于(A(i,k)- L(i,1:k-1)U(1:k-1,k))/U(k,k),对L(i,k)赋值,即对L的第k列赋值else %否则,即i<j时,此时就是要对U进行赋值了,因为当i>j时,U(i,j)=0,不用管U(k,j)=A(k,j)-L(k,1:k-1)U(1:k-1,j);%根据LU分解的关系知U(k,j)的值等于A(k,j)-L(k,1:k-1)U(1:k-1,j)进而对U的第k列赋值end %if结束标志end %for j=2:n结束标志end %for i=2:n结束标志end %for k=2:n结束标志hl;RA,U,L %输出矩阵的秩RA,上三角函数U,下三角函数Lend %if h(1,i)~=0结束标志end %RA==n结束标志 %%%%%%%%%%%%%%%%%%%%%%%%以上代码中有很多多余的,当判断A的秩为n之后其他的主子式的行列式都不为0了,判断是多余的,故我进行了改进,如下%%%%%%%%%%%%%%%%%%%%%%% function hl=LUfenJie(A) %函数名为zhiLU,输入矩阵A,来进行LU分解,返回值hl为A的各阶主子式的行列式[n n] =size(A);%返回矩阵A的维数

RA=rank(A); %返回矩阵A的秩if RA~=n %判断矩阵A的秩RA是否不等于A的维数n,当不等于n时,即小于n时执行if中的语句disp('请注意:因为A的n阶行列式hl等于零,所以A不能进行LU分解A的秩RA如下:'), RA,hl=det(A);%输出disp中的字符串,RA的值,hl的值(此时它的值为矩阵A的行列式)return %并且退出程序elsefor p=1:n%从1到n循环,主要是想获得1至n阶主子式的行列式h(p)=det(A(1:p, 1:p));%A(1:p, 1:p)为A的前p行前p列,即A的p阶主子式,从而h(p)为A的p阶主子式的值end %for语句结束标志hl=h(1:n);%把A的各阶主子式的行列式值赋给hl存储

disp('请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解A的秩RA和各阶顺序主子式值hl依次如下:')%输出disp中的字符串for j=1:n%对1到n循环U(1,j)=A(1,j);%把A的第一行中的各个值赋给U中第一行的各个变量end%for循环结束标志for k=2:n%从第2列到第n列进行循环,即依次给LU的第k列赋值for i=2:n%从2到n循环 ,与j的循环是相互联系的,即当i>j时对下三角矩阵L赋值,当j>=i时对上三角U赋值for j=2:n%从2到n循环 ,与i的循环是相互联系的,即当i>j时对下三角矩阵L赋值,当j>=i时对上三角U赋值L(1,1)=1;L(i,i)=1; %始终保持L对角线上的元素为1if i>j %当i>j时,此时就是要对L进行赋值了,因为当i<j时,L(i,j)=0,不用管L(1,1)=1;L(2,1)=A(2,1)/U(1,1); L(i,1)=A(i,1)/U(1,1);%根据LU分解的关系知,L(i,1)处的值=A(i,1)/U(1,1),从而对L(i,1)进行赋值,即对L的第一列赋值L(i,k)=(A(i,k)- L(i,1:k-1)U(1:k-1,k))/U(k,k);%还是根据LU分解的关系L(i,k)处的值等于(A(i,k)- L(i,1:k-1)U(1:k-1,k))/U(k,k),对L(i,k)赋值,即对L的第k列赋值else %否则,即i<j时,此时就是要对U进行赋值了,因为当i>j时,U(i,j)=0,不用管U(k,j)=A(k,j)-L(k,1:k-1)U(1:k-1,j);%根据LU分解的关系知U(k,j)的值等于A(k,j)-L(k,1:k-1)U(1:k-1,j)进而对U的第k列赋值end %if结束标志end %for j=2:n结束标志end %for i=2:n结束标志end %for k=2:n结束标志hl;RA,U,L %输出矩阵的秩RA,上三角函数U,下三角函数Lend %RA~=n结束标志

矩阵分解 (decomposition,factorization)是多半将矩阵拆解为数个三角形矩阵(triangular matrix)

依使用目的的不同 ,可分为三种矩阵分解法:1)三角分解法 (Triangular Factorization),2)QR 分解法 (QR Factorization),3)奇异值分 解法 (Singular Value Decompostion)

(1) 三角分解法

三角分解法是将原正方 (square) 矩阵分解成一个上三角形矩阵 或是排列(permuted) 的上三角形矩阵 和一个 下三角形矩阵,这样的分解法又称为LU分解法它的用途主要在简化一个大矩阵的行列式值的计算过程,求 反矩阵,和求解联立方程组不过要注意这种分解法所得到的上下三角形矩阵并非唯一,还可找到数个不同 的一对上下三角形矩阵,此两三角形矩阵相乘也会得到原矩阵

我们举以下二个矩阵为例:

利用三角分解法可将A和B二矩阵分别拆解为上下三角形矩阵

注意B分解的矩阵得到的第一个矩阵[LB]是排列的下三角形矩阵,如果第二、三列互换,则此变成完全的下 三角形矩阵

以MATLAB函数计算上述的LU分解法,其语法为[L,U]=lu(A),其中L代表下三角形矩阵U代表上三角形矩阵我们来看一个例子

>> A = [1 2 -1,-2 -5 3; -1 -3 0]; B=[1 3 2; -2 -6 1; 2 5 7];

>> [L1,U1] = lu(A); [L2,U2] = lu(B);

>> L1; U1

L1 = % 注意这个矩阵L1和之前的[LA]不相同

-05 1 0

1 0 0

05 1 1

U1 = % 注意这个矩阵U1和之前的[UA]不相同

-2 -5 3

0 -05 05

0 0 -2

>> L2; U2

L2 = % 注意这个矩阵L2和之前的[LB]不相同

-05 0 1

1 0 0

-1 1 0

U2 = % 注意这个矩阵U2和之前的[UB]不相同

-2 -6 1

0 -1 8

0 0 25

(2) QR分解法

QR分解法是将矩阵分解成一个正规正交矩阵与上三角形矩阵正规正交矩阵Q满足条件,所以称为QR分解法与此正规正交矩阵的通用符号Q有关

MATLAB以qr函数来执行QR分解法,其语法为[Q,R]=qr(A),其中Q代表正规正交矩阵,而R代表上三角形矩 阵此外,原矩阵A不必为正方矩阵;如果矩阵A大小为,则矩阵Q大小为,矩阵R大小为

(3) 奇异值分解法

奇异值分解 (sigular value decomposition,SVD) 是另一种正交矩阵分解法;SVD是最可靠的分解法,但是它比QR 分解法要花上近十倍的计算时间[U,S,V]=svd(A),其中U和V代表二个相互正交矩阵,而S代表一对角矩阵和QR分解法相同者,原矩阵A不必为正方矩阵

使用SVD分解法的用途是解最小平方误差法和数据压缩

at matlab,

A=[2,-1,-1;0,-4,2;6,-3,0]

[l,u,p]=lu(A,'matrix')

l =

10000 0 0

0 10000 0

03333 0 10000

u =

6 -3 0

0 -4 2

0 0 -1

p =

0 0 1

0 1 0

1 0 0

以上就是关于Matlab常用命令全部的内容,包括:Matlab常用命令、matlab lu函数问题、求直接三角分解法的matlab程序,每一步都需要解释,谢谢!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9789069.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存