Matlab 常见自带函数总结

转自原文:https://blog.csdn.net/weixin_42717711/article/details/82682051

1.数值变量的基本运算
数值变量都是矩阵,矩阵之间最基本的运算有加、减、乘(方)、转置,运算符分别是±*’,与数学中的一般表示无异,但仍有一些地方需要注意,以下结合代码进行说明。
1)矩阵加减法只有维度相同的矩阵才能进行,例如

a=[1 2]
b=[1 3]
c=[1;2]

d=a+b

d=a-b

都是可以进行的,因为a和b都是1行2列,但

d=a+c

则无法进行,因为数学上,不同维度的矩阵加减法并没有定义。
2)矩阵乘法只有第一个矩阵的列数等于第二个矩阵的行数时,才能进行,例如上段代码中的abc,则

d=a*c

是可以进行的,但

d=a*b

则不能进行,原因同样是因为这种计算在数学上没有定义。还有一种特殊的乘法,也就是乘方,例如

A=[1 2;3 4]
B=A*A

这样的矩阵乘法可以写成

B=A^2

当然,数学上规定,只有方阵才能进行乘方。
3)矩阵与数乘除,由于数也可以看做1*1的矩阵,因此这是一种特殊的矩阵乘除法,和数学上定义一样,比如

d=a*2
d=a/2

这些都能进行。
4)转置,任何维度的矩阵都可以进行转置,例如

d=a’

就会将a这个行向量转置,得到一个列向量d。需要注意的是,这种运算更准确的说法是共轭,对实数矩阵而言,这两种说法并没有什么区别,但对复数矩阵而言,共轭的意思,不仅是把a(i,j)和a(j,i)交换位置,更要把所有元素的虚数部分乘以-1。
2.数值变量的特殊运算
和其他软件不同,matlab里提供了一些很有意思的运算符,有点乘.、点除./和点方.^,这些运算符在本身的运算符前加一个点,可以实现很强大的功能,但由于和一般的运算符太像,也造成了很多人混淆。这些运算符有很多叫法,比如.,一般称为点乘、元素乘、数乘,这些叫法都是为了让这个运算符区别于普通的乘,有时为了强调这种区别,也把通常的乘叫矩阵乘。
简单而言,这些运算的含义是将矩阵作为一般的数来进行运算,比如

[1 2 3].[4 5 6]
[1
4 25 36]
[1 2 3]./[4 5 6]
[1/4 2/5 3/6]
[1 2 3].^3
[1^3 2^3 3^3]

所以这里点乘和点除需要注意,只有同样维度的矩阵才能进行这种特殊运算。另外点除还要注意不要除以零,虽然matlab并不会报错,但除以零在数学上没有定义,所以这种除法其实已经失去了意义。
于是,什么时候用矩阵乘,什么时候用点乘,其实是看计算的目的,但有些时候,这两种运算符的确是等效的:
1)数字的乘除

1*1
1.*1
当然结果相同
2)矩阵与数字的乘除

1*a
1.*a
结果也是一样的
3.数值变量的常用函数
这里的函数都可以通过doc+函数名查到更详细的帮助,因此仅列出典型用法。

a=ones(3)
a=ones(1,5)

生成指定大小的全1矩阵

a=zeros(3)
a=zeros(1,5)

生成指定大小的全0矩阵

a=eye(3)

生成指定大小的单位方阵

inv([1 2;3 4])

矩阵求逆,只能对方阵操作。matlab有左除法,通常更高效,如有需要也可尝试

size([1 2;3 4])

获得矩阵的行数和列数

也可以通过

size([1 2;3 4],1)

单独获得行数或者列数

length([1 2 3])

获得向量的长度,这个命令也可以对矩阵操作,当然一般只对向量操作

max([1 2 3])
min([1 2 3])

获得向量的最大和最小值,也可以对矩阵操作

sort([2 1 3])

按大小对向量进行排序,也可以对矩阵操作

sum([1 2 3])

求和,也可以对矩阵操作

cumsum([1 2 3])

累积求和,类似求定积分,一般只对向量操作,需要注意的是,累积求和后,结果和原向量长度一样

diff([1 2 5 6])

差分运算,类似于求导,一般只对向量操作,需要注意的是,差分操作后,结果的长度比原向量少一

plot([1 2.5 3],[5 6 4])

画图,需要注意的是,两个向量的长度要相等才能画图

exp([1 2])

指数函数,类似的数学函数还有三角函数(sin,cos,tan,asin,acos,atan),对数函数(log),这些函数在对矩阵操作时,相当于对矩阵中的每个元素进行操作,类似点乘这样的运算符

A+B,A-B,8A,A的平方,A*B,矩阵A的逆.

1.A+B

A=ones(3);B=magic(3);C=A+B

2.A-B

%同上

3.8A

8*A

4.A的平方,A*B,矩阵A的逆.

A.2;A2;A*B;A.*B;inv(A);

注意:像带点"."时对应元素相乘((如A.B)),不带时矩阵相乘(如AB).

% 由m行n列构成的数组称为(m×n)阶矩阵。
% 用"[]“方括号定义矩阵;
% 其中方括号内”,“逗号或” "空格号分隔矩阵列数值;
% ";"分号或"Enter"回车键分隔矩阵行数值。
% 例:a=[a11 a12 a13;a21 a22 a23]或a=[a11,a12,a13;a21,a22,a23]定义了一个23
% 阶矩阵a。
% aij可以为数值、变量、表达式或字符串,如为数值与变量得先赋值,表达式和变量可以
% 以任何组合形式出现,字符串须每一行中的字母个数相等 ,调用时缺省状态按行顺序取字
% 母,如a(1)为第一行第一个字母。
%
% 常用函数如下:函数命令 说明
% size(a)
% [d1,d2,d3,…]=size(a) 求矩阵的大小,对m
n二维矩阵,第一个为行数m,第二个为
% 列数n;
% 对多维矩阵,第N个为矩阵第N维的长度。
% cat(k,a,b) 矩阵合并,运行a = magic(3)
% b = pascal(3)
% c = cat(4,a,b)
% 改4为3或2或1,自己体会合并后的效果。
% k=1,合并后形如 [a;b],行添加矩阵(要求a,b的列数相等才能合并);
% k=2,合并后形如[a,b],列添加矩阵(要求a,b的行数相等才能合并),以此类推,n维的矩
% 阵合并,要求n-1维维数相等才可以)。
% fliplr(a) 矩阵左右翻转
% flipud(a) 矩阵上下翻转
% rot90(a)
% rot90(a,k) 矩阵逆时针旋转90度(把你的头顺时针旋转90看原数就可以知道结果了)
% k参数定义为逆时针旋转90k度。
% flipdim(a,k) 矩阵对应维数数值翻转,如k=1时,行(上下)翻转,k=2时,列(左右)翻转。
% tril(a)
% tril(a,k) 矩阵的下三角部分(包括对角线元素),对应k=0时的取值数。
% k参数设置为正负数值对应对角线向上或向下移动k行划分下三角元素。
% triu(a)
% tril(a,k) 矩阵的上三角部分(包括对角线元素),对应k=0时的取值数。
% k参数设置为正负数值对应对角线向上或向下移动k行划分上三角元素。
% diag(a)
% diag(a,k) 生成对角矩阵或取出对角元素,对应k=0时的取值数。
% k参数设置为正负数值对应对角线向上或向下移动k行取对角元素或生成对角矩阵。
% repmat(a,m,n) 矩阵复制,把矩阵a作为一个单位计算,复制成m
n的矩阵,其每
% 一元素都含一个矩阵a,实际结果为一个size(a,1)*m行,size(a,2)*n列的矩阵。
% w=meshgrid(s,t)
% [u,v]=meshgrid(s,t) 生成行m=size(t,1)*size(t,2),列n=size(s,1)*size(s,2))
% 阶的两个矩阵。其中u为按行顺序取s的n个矩阵元数,按列排列重复m行,v为按列顺序取t的
% m个矩阵元数 ,按行排列重复n列。只生成一个矩阵时,w=u。
% eye(a)
% eye(a,k) 生成a阶单位方阵
% k参数设置为生成a×k阶单位矩阵,即生成a阶单位方阵后,取前k列,不足补0。
% ones(a)
% ones(a,k) 生成a阶全1方阵
% k参数设置生成a×k阶全1矩阵。
% zeros(a)
% zeros(a,k) 生成a阶全0方阵
% k参数设置生成a×k阶全0矩阵。
% inv(a) 生成a的逆矩阵

% l 求矩阵的长度的函数
a=[10,2,12;34,2,4;98,34,6];
size(a)
%
% ans =
%
% 3 3
%
length(a)
%
% ans =
%
% 3

% 1. 通过在矩阵变量后加’的方法来表示转置运算

a=[10,2,12;34,2,4;98,34,6];

a’
%
% ans =
%
% 10 34 98
%
% 2 2 34
%
% 12 4 6

% 2. 矩阵求逆

inv(a)

% ans =
%
% -0.0116 0.0372 -0.0015
%
% 0.0176 -0.1047 0.0345
%
% 0.0901 -0.0135 -0.0045

% 3. 矩阵求伪逆

pinv(a)
%
% ans =
%
% -0.0116 0.0372 -0.0015
%
% 0.0176 -0.1047 0.0345
%
% 0.0901 -0.0135 -0.0045
%
% 4. 左右反转

fliplr(a)
%
% ans =
%
% 12 2 10
%
% 4 2 34
%
% 6 34 98
%
% 5. 矩阵的特征值

[u,v]=eig(a)

% u =
%
% -0.2960 0.3635 -0.3600
%
% -0.2925 -0.4128 0.7886
%
% -0.9093 -0.8352 0.4985
%
% v =
%
% 48.8395 0 0
%
% 0 -19.8451 0
%
% 0 0 -10.9943

% 6. 上下反转

flipud(a)

% ans =
%
% 98 34 6
%
% 34 2 4
%
% 10 2 12
%
% 7. 旋转90度

rot90(a)
%
% ans =
%
% 12 4 6
%
% 2 2 34
%
% 10 34 98
%
% 8. 取出上三角和下三角

triu(a)
%
% ans =
%
% 10 2 12
%
% 0 2 4
%
% 0 0 6

tril(a)
%
% ans =
%
% 10 0 0
%
% 34 2 0
%
% 98 34 6

[l,u]=lu(a)
%
% l =
%
% 0.1020 0.1500 1.0000
%
% 0.3469 1.0000 0
%
% 1.0000 0 0
%
% u =
%
% 98.0000 34.0000 6.0000
%
% 0 -9.7959 1.9184
%
% 0 0 11.1000
%
% 9. 正交分解

[q,r]=qr(a)
%
% q =
%
% -0.0960 -0.1232 -0.9877
%
% -0.3263 -0.9336 0.1482
%
% -0.9404 0.3365 0.0494
%
% r =
%
% -104.2113 -32.8179 -8.0989
%
% 0 9.3265 -3.1941
%
% 0 0 -10.9638
%
% 10.奇异值分解

[u,s,v]=svd(a)
%
% u =
%
% 0.1003 -0.8857 0.4532
%
% 0.3031 -0.4066 -0.8618
%
% 0.9477 0.2239 0.2277
%
% s =
%
% 109.5895 0 0
%
% 0 12.0373 0
%
% 0 0 8.0778
%
% v =
%
% 0.9506 -0.0619 -0.3041
%
% 0.3014 0.4176 0.8572
%
% 0.0739 -0.9065 0.4156
%
% 11.求矩阵的范数

norm(a)
%
% ans =
%
% 109.5895

norm(a,1)
%
% ans =
%
% 142

norm(a,inf)
%
% ans =
%
% 138

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab中,矩阵函数是指对矩阵进行特殊的数学运算或操作的函数。其中一些常见的矩阵函数包括: 1. 点乘运算(.*):矩阵的点乘运算指的是对矩阵中的每个元素进行乘法操作。这种运算符通过在乘法符号前加一个点来表示。例如,对于矩阵A和矩阵B,A .* B 表示对A和B中对应位置的元素进行乘法运算。 2. 点除运算(./):矩阵的点除运算指的是对矩阵中的每个元素进行除法操作。这种运算符通过在除法符号前加一个点来表示。例如,对于矩阵A和矩阵B,A ./ B 表示对A和B中对应位置的元素进行除法运算。 3. 点方运算(.^):矩阵的点方运算指的是对矩阵中的每个元素进行幂运算。这种运算符通过在幂运算符号前加一个点来表示。例如,对于矩阵A,A .^ n 表示对A中的每个元素进行n次幂运算。 此外,在Matlab中还存在其他一些数学函数,如指数函数、三角函数和对数函数等。这些函数在对矩阵进行操作时,相当于对矩阵中的每个元素进行相应的数学运算。例如,对于矩阵A,sin(A)表示对A中的每个元素求正弦值。 需要注意的是,矩阵函数的使用要根据具体的计算目的来确定,有时候点乘运算和矩阵乘法运算可能是等效的。同时,在进行矩阵的点乘、点除和点方运算时,需要保证参与运算的矩阵具有相同的维度。此外,在进行除法运算时,还要注意避免除以零,因为除以零在数学上是没有定义的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Matlab 常见自带函数总结](https://blog.csdn.net/qq_43493562/article/details/95759435)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值