怎么利用矩阵MATLAB计算?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么利用矩阵MATLAB计算?相关的知识,希望对你有一定的参考价值。
利用矩阵MATLAB计算矩阵A+B,A-B,8A,A的平方,A*B,矩阵A的逆.
我是刚学的,不太会,请高手帮帮忙!
可不要叫我自己查MATLAB 的函数哦
矩阵分析是解决很多问题的好方法,但是很多时候矩阵的运算比较繁琐,特别是高阶矩阵运算。这时候如果用matlab来计算就方便快捷得多。下面介绍一些基本的矩阵运算方法。如加,减,乘,除,转置,求逆。
约定:
a=[1,3,5;2,4,6;7,9,8] b=[9,6,4;3,4,5;2,3,4]
工具/原料
1、加和减:
加减法的命令很简单,直接用加或者减号就可以了。如:
c=a+b
d=a-b
2、乘法:
一般乘法:c=a*b,要求a的列数等于b的行数。
如果a,b是一般的向量,如a=[1,2,3] b=[3,4,5]
点积: dot(a,b),
叉积: cross(a,b)
卷积: conv(a,b)
3、除法:一般在解线性方程组时会用到。
x=a\\b 如果ax=b,则 x=a\\b是矩阵方程的解。
x=b/a 如果xa=b, 则x=b/a是矩阵方程的解。
4、转置:
转置时,矩阵的第一行变成第一列,第二行变成第二列,。。。
x=a.\'
5、求逆:
要求矩阵为方阵。这在矩阵运算中很常用。
x=inv(a)
参考技术A 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;A^2;A*B;A.*B;inv(A);
注意:像带点"."时对应元素相乘((如A.*B)),不带时矩阵相乘(如A*B).
% 由m行n列构成的数组称为(m×n)阶矩阵。
% 用"[]"方括号定义矩阵;
% 其中方括号内","逗号或" "空格号分隔矩阵列数值;
% ";"分号或"Enter"回车键分隔矩阵行数值。
% 例:a=[a11 a12 a13;a21 a22 a23]或a=[a11,a12,a13;a21,a22,a23]定义了一个2*3
% 阶矩阵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参数定义为逆时针旋转90*k度。
% 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 参考技术B 开玩笑啊!!
矩阵之间的乘除都必须加“.”
刚刚这个一定是错的“
C1=A+B
C2=A-B
C3=8*A
C4=A^2
C5=A*B
正确答案是:
C1=A+B
C2=A-B
C3=8*A
C4=A.^2
C5=A.*B 参考技术C 举个例子吧。
%MATLAB计算矩阵A+B,A-B,8A,A的平方,A*B,矩阵A的逆.
A=magic(4)
B=A'
C1=A+B
C2=A-B
C3=8*A
C4=A^2
C5=A*B
运行结果:
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
B =
16 5 9 4
2 11 7 14
3 10 6 15
13 8 12 1
C1 =
32 7 12 17
7 22 17 22
12 17 12 27
17 22 27 2
C2 =
0 -3 -6 9
3 0 3 -6
6 -3 0 -3
-9 6 3 0
C3 =
128 16 24 104
40 88 80 64
72 56 48 96
32 112 120 8
C4 =
345 257 281 273
257 313 305 281
281 305 313 257
273 281 257 345
C5 =
438 236 332 150
236 310 278 332
332 278 310 236
150 332 236 438本回答被提问者采纳 参考技术D 首先输入矩阵A和B的值;
A=[...;...;...;]%分号表示一行元素已经输完
B=[...;...;...;]%分号表示一行元素已经输完
求A+B;(存于c中)
c=A+B;
求A-B;(存于c中)
c=A-B;
求8A;(存于c中)
c=8*A;
求A的平方;
c=A^2;
求A*B;
矩阵乘法:c=A*B;
对应项点乘:c=A*.B;
求矩阵的逆;
c=inv(A);
要看结果在工作空间直接查看变量值c就行;
这里把结果都存于c中
以上是关于怎么利用矩阵MATLAB计算?的主要内容,如果未能解决你的问题,请参考以下文章
我的matlab运行程序比较慢,怎么提高核心利用率和内存利用率?核心8个,内存40G。使用率非常低