第二讲 MATLAB的数值计算
matlab2_matlab教程
x1+2x2+3x3=1 2x1+3x2+4x3=2 a=[1 2 3;2 3 4];b=[1;2]; x=a\b x= 1.00 0 x=
x1 1 2 3 1 x2 = 2 3 4 2 x3
a
x = b
x=pinv(a)b
0.83 0.33
0
-0.17
六、微分方程求解
微分方程求解的仿真算法有多种,常用 的有Euler(欧拉法)、Runge Kutta(龙 格-库塔法。 Euler法称一步法,用于一阶微分方程
a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10]; a.*b ans = 2 8 18 4 15 30 49 72 90
a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10];
a*b ans = 25 55 85
37 85 133
二、数据的保存与获取
把matlab工作空间中一些有用的数 据长久保存下来的方法是生成mat数 据文件。 save —— 将工作空间中所有的变 量存到matlab.mat文件中。 默认文件名
save data——将工作空间中所
有的变量存到data.mat文件中。
save data a b ——将工作空间 中a和b变量存到data.mat文件中。
rand —— 随机矩阵
eye —— 单位矩阵
zeros ——全部元素都为0的矩阵
ones ——全部元素都为1的矩阵
还有伴随矩阵、稀疏矩阵、魔方 矩阵、对角矩阵、范德蒙等矩阵的创 建,就不一一介绍了。
注意:matlab严格区分大小写字母,因
此a与A是两个不同的变量。 matlab函数名必须小写。
第二讲 Matlab的基本计算
>>a3=mat2str( a,2 ) %一行字符
字符串的应用:作出函数图形,并标注最大值点。 字符串的应用:作出函数图形,并标注最大值点。
y = e 2t sin(3t ) 0 ≤ t ≤ 10
clear %清除内存变量 t = 0 : 0.01 : 10; %时间 t 从 0 到 10 每隔 0.01 均匀采样 y = exp( -2*t ) .* sin( 3*t ); %对应每一个 t 求 y 值 %求最大值 y_max 及其下标 i_max [ y_max, i_max ] = max( y ); %横坐标字符串 t_text = [ 't = ', num2str( t(i_max) ) ]; %纵坐标字符串 y_text = [ 'y = ', num2str( y_max ) ]; %三行字符来标识最大值点 max_text = char( 'Maxium', t_text, y_text ); %图名称字符串 Title = [ 'y = exp( -2*t ) .* sin( 3*t )' ]; %新建一个图形窗 figure %画一条黑色的水平线 plot( t,zeros( size(t) ), 'k' ) %保持图形不被清除 hold on %蓝色实线画曲线 y(t) plot( t, y, 'b' ) %大小为 20 的红圆点标记最大值点 plot( t(i_max), y_max, 'r.', 'MarkerSize', 20 ) %在最大值点附近显示注释字符 text( t(i_max)+0.3, y_max+0.05, max_text ) %显示图名、横坐标名、纵坐标名 title( Title ); %取消图形保持 xlabel( 't' ) ylabel( 'y' ) hold off
第二章 Matlab软件的数值计算方法2
3)三角函数、双曲函数及它们的反函数 )三角函数、 只用于数值计算外, 除atan2只用于数值计算外,其余的三角函数(如sin)、 只用于数值计算外 其余的三角函数( )、 双曲函数( 双曲函数(如cosh)以及它们的反函数(如asin, acosh) )以及它们的反函数( ) 在数值计算和符号计算中使用方法都相同。 在数值计算和符号计算中使用方法都相同。 4)指数、对数函数 )指数、 数值、符号计算中,函数sqrt, exp, expm的使用方法 数值、符号计算中,函数 的使用方法 完全相同,至于对数函数,符号计算中只有自然对数log, 完全相同,至于对数函数,符号计算中只有自然对数log, 而没有数值计算中的log2, log10。 而没有数值计算中的 。 5) 复数函数 ) conj, real, imag, abs相同,但无求相角的指令。 相同, 相同 但无求相角的指令。 6) 矩阵代数指令 ) diag, triu, tril, inv, det, rank, rref, null, colspace, poly, expm, eig基本与数值计算相同,只有 基本与数值计算相同, 稍微不同。 基本与数值计算相同 只有svd稍微不同。 稍微不同
1.3 符号表达式中自由变量的确定 findsym可实现对表达式中所有自由符号变量或指定数 可实现对表达式中所有自由符号变量或指定数 目的独立自变量的自动认定。 目的独立自变量的自动认定。 findsym(expr) findsym(expr,n) 【例7】对独立自由符号变量的自动辨认。 】对独立自由符号变量的自动辨认。 syms a b x X Y; k=sym('3'); z=sym('c*sqrt(delta)+y*sin(theta)'); EXPR=a*z*X+(b*x^2+k)*Y; findsym(EXPR)
matlab第2章 数值计算
i或j
虚数单位,表示 1 =0.0000 + 1.0000i
NaN或nan
表示不定数,非数值型,如0/0
realmin realmax
可用的最小正实数值,最小浮点数,21022 =2.2251e-308
可用的最大正实数值最大浮点数, 21022=4.4942e+307
2.1.2 变量与基本函数
1.变量
B=[1 3 6 8 10 13. 17 19 21]; save xyz A B
首页
这样就将数组A、B保存在文件名为xyz的数据文件,即xyz.mat文件。
3.利用Workspace菜单保存数组
若Workspace内存变量中已有数组A、B,可使用菜单栏 中的“File”→“Save Workspace As”对话框来进行操 作。
>> x(2)=0
x=
2 0 3 16 1 27 39 4 48
>> x(a)=10
x=
2 0 3 10 1 10 10
4
10 。 首页
2.2.4 数组排序及维数
1.数组排序
格式
sort(x)
%将数组x中的元素按升序排列
sort(x,'ascend') %将数组x中的元素按升序排列
sort(x,'descend') %将数组x中的元素按降序排列
含义
a+b a.*b a./b a.\b a.^k
对应元素相加
a-b 对应元素相减
对应元素相乘
a的元素被b的 对应元素相除 b的元素被a的 对应元素相除 a的每个元素的og(a)
标量k与b中每 一个元素相乘
标量k被b中每 一个元素相除
第二章 MATLAB数值计算
数值
复数 z=a+b*i或z=a+b*j z=a+bi或z=a+bj(当b为标量时) z=r*exp(i*theta) 得出一个复数的实部、虚部、幅值和相角。 a=real(z) %计算实部 b=imag(z) %计算虚部 r=abs(z) %计算幅值 theta=angle(z) %计算相角
变量
矩阵和数组运算
diag(X)产生X矩阵的对角阵 [l,u]=lu(X)方阵分解为一个准下三角方阵和一个上三 角方阵的乘积。l为准下三角阵,必须交换两行才能成 为真的下三角阵。 [q,r]=qr(X) m×n阶矩阵X分解为一个正交方阵q和一个 与X同阶的上三角矩阵r的乘积。方阵q的边长为矩阵X的 n和m中较小者,且其行列式的值为1。 [u,s,v]=svd(X) m×n阶矩阵X分解为三个矩阵的乘积, 其中u,v为n×n阶和m×m阶正交方阵,s为m×n阶的对角 阵,对角线上的元素就是矩阵X的奇异值,其长度为n和 m中的较小者。
第二章
MATLAB数值计算
2.1 变量和数值
数据类型
数据类型包括:数值型、字符串型、元胞型、结构 型等 数值型=双精度型、单精度型和整数类 整数类=无符号类(uint8、uint16、uint32、uint64)和 符号类 (int8、int16、int32、int64)
数值
数据的表达方式 可以用带小数点的形式直接表示 用科学计数法 数值的表示范围是10-309~10309。 以下都是合法的数据表示: -2、5.67、2.56e-56(表示2.56×10^-56)、 4.68e204(表示4.68×10^204)
E1=tril(A) E2=tril(A,1) D=triu(A) E=triu(A,-1)
第2章-MATLAB的数值计算
2.5.1 多项式的定义
1.直接定义 令a(x) 代表一个如下的多项式
a ( x ) = a 1 x n + a 2 x n 1 + K + a n x + a n +1
在MATLAB中,这个多项式可以用它的系数向量 A=[a(1),a(2),…,a(n),a(n+1)]来表示。 2 .用命令poly创建 如果A是矩阵,则poly(A)将创建A矩阵的特征多项式; 如果A是向量,则poly(A)将创建以A中各元素为根的 多项式。
创建特殊矩阵的函数
zeros() 矩阵元素都是零 ones() 矩阵元素都是1 – 注意: () 中的数字用于定义矩阵维数, ()内 不是数字的情况参看Help。 rand() 矩阵元素是0到1之间均匀分布的随机数 randn() 矩阵元素是正态分布的随机数
2.2.2 矩阵运算
MATLAB提供矩阵算术运算有: 加 (+)、减 (-)、乘 (*)、除 (/)、幂次方 (^)、转置 、 、 、 、 、转置(') 注意,对于矩阵来说,乘法有左乘右乘之分,A *B时 要求A的列数等于B的行数,即满足矩阵相乘的条件。 MATLAB中,为求解线性方程组,引入了矩阵除法。 MATLAB中的矩阵除法有左除(\)和右除(/)两种。 以下是矩阵运算的合法命令形式: A+B 、A-B、A*B、A/B、A\B、A^p(此处p只能是标 量,A必须为方阵)、A'
2.5.2 多项式的四则运算
函数 roots poly
功能 多项式求根 由根创建多项式
函数 polyfit
功能 多项式曲线拟合
polyder 多项式求导 conv deconv 多项式相乘(卷积) 多项式相除(反卷 积)
Matlab(R2009a版)-第2讲 数值运算
MATLAB2009从入门到精通课程主要内容•第1章MATLAB简介•第2章数值运算•第3章单元数组和结构•第4章字符串•第5章符号运算•第6章MATLAB绘图基础•第7章程序设计•第8章计算方法的MATLAB实现•第9章优化设计•第10章SIMULINK仿真初探第2章数值运算•本章将介绍MATLAB2009的数值计算功能,首先讲述MATLAB中的运算符,然后讲述包括MATLAB的向量、矩阵和数组,并介绍他们之间的运算。
此外,还介绍了一些特殊的矩阵数据结构。
另外,还对MATLAB中的多项式的运算以及多项式拟合作了详细介绍。
2.1 MATLAB中的变量•MATLAB中的变量必须以字母打头,之后可以是任意字母、数字或下划线,变量名区分字母大小写,变量名不超过19个字符,默认变量名为ans。
除此之外还包含一些特殊的变量。
•who命令能够显示变量的信息;•whos命令能够显示变量的详细信息。
•matlab中同样支持复数变量,表示方法为a=m+ni(j)。
当n是表达式时,n与i(j)之间必须要加乘号。
另外也可以用complex(x,y)来产生复数。
•在循环程序段中一般不把i和j作为变量名称,以免生成数据时发生误解。
•>> a=1+2i• a =• 1.0000 + 2.0000i •>> b=1+3*i• b =• 1.0000 + 3.0000i•>> a=sin(2)+cos(2)*i• a =•0.9093 -0.4161i•>> b=sin(2)+cos(3)i•??? b=sin(2)+cos(3)i•|•Error: Unexpected MATLAB expression.•>> x=sin(2);•>> y=cos(3);•>> a=complex(x,y)• a =•0.9093 -0.9900i•>> b=complex(x)• b =•0.9093•>> a=i+2i• a =•0 + 3.0000i •>> b=i+2*i • b =•0 + 3.0000i•>> i=5;•>> a=i+2i• a =• 5.0000 + 2.0000i •>> b=i+2*i• b =•15•>> i=5;•>> a=5+i • a =•10•>> b=5+1*i • b =•10•>> i=5;•>> a=5+2i• a =• 5.0000 + 2.0000i •>> a=5+2*i• a =•152.2 MATLAB的数值运算基础2.3 数组及向量运算•由数学知识可知,数组和矩阵有着不同的概念。
matlabMATLAB的数值计算
4. 矩阵的其它运算
inv —— 矩阵求逆 det —— 行列式的值 eig —— 矩阵的特征值 diag —— 对角矩阵
’ —— 矩阵转置 sqrt —— 矩阵开方
5.矩阵的一些特殊操作
矩阵的变维
a=[1:12];b=reshape(a,3,4) c=zeros(3,4);c(:)=a(:) 矩阵的变向 rot90:旋转; fliplr:上翻; flipud:下翻 矩阵的抽取 diag:抽取主对角线;tril: 抽取主下三角;
2. 数组乘除(,./,.\)
ab —— a,b两数组必须有相同的行
和列两数组相应元素相乘。
a=[1 2 3;4 5 6;7 8 9];
b=[2 4 6;1 3 5;7 9 10];
a.*b
ans =
2
8
18
4
15
30
49
72
90
a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10];
save data a b ——将工作空间 中a和b变量存到data.mat文件中。 下次运行matlab时即可用load指 令调用已生成的mat文件。
load —— load data —— load data a b ——
即可恢复保 存过的所有 变量
mat文件是标准的二进制文件, 还可以ASCII码形式保存。
3. 数组乘方(.^) — 元素对元素的幂
例:
a=[1 2 3];b=[4 5 6];
z=a.^2
z=
1.00
4.00
9.00
z=a.^b
z=
1.00 32.00 729.00
四、 多项式运算
MATLAB课件第二章 MATLAB语言的数值计算
2.1.3 变量精度
在matlab中,变量的精度问题不需要设 定,一律使用双精度,但是我们可以通过 format命令或者更改preferences中的 Numericformat项来更改数据的显示格式. 命令格式为:format short
2.1.4 永久变量
Matlab语言设置了一些永久变量 eps,pi,Inf,NaN,i,j,nargin,nargout, realmax,realmin (1)这些变量不能被clear清除; (2)这些变量不响应who和whos; (3)nargin,nargout为函数变量; (4)pi,i,j,realmax,realmin为机器常数变 量; (5)Inf 为无穷变量,NaN为非数变量.
2、矩阵乘()运算规则:
A矩阵的列数必须等于B矩阵的行数;
标量可与任何矩阵相乘。
除算) .^ 点乘方(用于矩阵点运算) ./ 点除(用于矩阵点运算) kron 张量积 ‘ 矩阵转置 inv 矩阵求逆 fliplr 矩阵左右翻转 flipud 矩阵上下翻转 rot90 矩阵逆时针方向旋转90度
线性代数方程组的表达式为AX = B或者 XA = B,由于矩阵维数的不同,方程组解 的形式也不同,设解向量X为n×1维的,系 数矩阵A的维数为m×n维的,系数矩阵B 的维数为n×1维的;那么方程组的解可以 分为以下三类: m=n,为恰定方程,可求得唯一解; m>n,为超定方程,求最小二乘解,多 于一组解; m<n,为欠定方程,解无实际意义,解 中至多有m个非零元素。
例2.27 已知矩阵a,求特征多项式与特征根。
3、多项式计算 我们可以利用polyval函数来计算出多项 式在指定点处的值,例如:
4、卷积和反卷积(多项式乘法与除法) 例如:求a(x)=x^3+2x^2+3x+4和 b(x)=x^3+4x^2+9x+16的乘积c(x);
第二讲 MATLAB的数值计算 —— matlab 具有出色的数值计算能力,占据世界上数值计算软件的主导地位
x=a\b x= 2.00 3.00
2.超定方程组的解
方程 ax=b ,m<n时此时不存在唯一解。 方程解 (a ' a)x=a ' b
x=(a' a)-1 a ' b —— 求逆法 x=a\b —— matlab用最小二乘法找一
个准确地基本解。
例: x1+2x2=1 2x1+3x2=2 3x1+4x2=3
特征多项式一定是n+1维的
特征多项式第一个元素一定是1
例:a=[1 2 3;4 5 6;7 8 0]; p=poly(a)
p =1.00 -6.00 -72.00 -27.00 p是多项式p(x)=x3-6x2-72x-27的
matlab描述方法,我们可用: p1=poly2str(p,‘x’) — 函数文件,显示 数学多项式的形式
matlab函数名必须小写。
3. 矩阵的修改
直接修改 可用键找到所要修改的矩阵,用键
移动到要修改的矩阵元素上即可修改。 指令修改
可以用A(,)= 来修改。
例如
a=[1 2 0;3 0 5;7 8 9]
a =1 2 0
305 789
还可以用函数subs
a(3,3)=0 a =1 2 0
p1 =x^3 - 6 x^2 - 72 x - 27
2.roots —— 求多项式的根
a=[1 2 3;4 5 6;7 8 0];p=poly(a) p=
1.00 -6.00 -72.00 -27.00 r=roots(p) r = 12.12
-5.73 ——显然 r是矩阵a的特征值 -0.39
用除法求的解x是具有最多零元素的 解 是具有最小长度或范数的解,这个 解是基于伪逆pinv求得的。
第二章 MATLAB的数值计算
2.2 矩阵运算
2.2.3 矩阵的基本运算
矩阵的加减(+-)运算 规则: (1) 相加、减的两矩阵必须有相同的行和列两矩阵对应元素相 加减。 (2) 允许参与运算的两矩阵之一是标量。标量与矩阵的所有元 素分别进行加减操作。 例如: a=[1 2 3;2 3 4; 3 4 5];b=[1 1 1;2 2 2;3 3 3];c=a+b c= 2 4 6 3 5 7 4 6 8
2.5 数据的处理
2.5.1 数据的统计和分析
1. 求矩阵最大和最小元素 (1)求向量的最大最小元素 ①y=max(X) 返回向量X的最大元素存入y。 ②[y,I]=max(X) 返回向量X的最大元素存入y,最大元素 的序号存入I。 (2)求矩阵的最大和最小元素 ①max(A) 返回一个行向量,向量的第i个元素是A矩阵 的第i列上的最大元素。 ②[Y,U]=max(A) 返回两个行向量,Y向量记录A的每列 的最大元素,U向量记录每列最大元素的行号。 ③max(A,[],dim) dim取1或2。dim取1时,该函数和 max(A)完全相同。dim取2时,该函数返回一个列向量, 其第i个元素是A矩阵的第i行上的最大元素。
2.4.2 数组的其他运算
数组的指数运算、对数运算和开方运算 分别为exp、log和sqrt,其运算实质是针对数组内部的每个 元素进行。 数组函数运算 通用形式为funname(A),funname为函数名。 数组逻辑运算 关系比较的结果由0和1组成,关系满足对应值为1,否则为0。 逻辑与 运算双方的对应元素都非0时,为1,否则为0 逻辑或 运算双方的对应元素有一非0时,为1,否则为0 逻辑非 运算数组对应的值为0时结果为1,否则为0 运算双方有一方为常数时,结果与数组同维,是数组元素依次 与常数比较的结果。
第二讲MATLAB的数值计算
ans =
3.14159265358979 >>format long e;pi ans = 3.141592653589793e+000 >>format long g;pi ans = 3.14159265358979
字符串 1、字符串的约定
字符串用单引号输入或赋值; 字符串的每个字符都是都是字符数组的一个元素; 字符串和字符数组基本上等价。
常用的特殊矩阵
单位矩阵:eye(m,n); eye(m) 零 矩 阵:zeros(m,n); zeros(m) 一 矩 阵:ones(m,n); ones(m) 对角矩阵:对角元素向量 V=[a1,a2,…,an] A=diag(V) 随机矩阵:rand(m,n)产生一个m×n的均匀分别的随机 矩阵
>>1/0 Warning: Divide by zero. ans = Inf >>0/0 Warning: Divide by zero. ans = NaN
定义变量时应避免与常量名相同,如果改变了某个常量 的值,可以用clear命令来恢复。
>>pi=1
pi =
1 >>clear pi >>pi ans = 3.1416
>> rand('seed',12); >> tic;x1=b'/a;t1=toc >> a=rand(100)+1.e8; t1 = 0.0773 >> x=ones(100,1); >> er1=norm(x-x1') >> b=a*x; er1 = >> cond(a) 139.8328 ans = 5.0482e+011
第2讲:MATLAB数值计算
下次运行matlab时即可用load指令调用已 生成的mat文件。
load ——
load data —— load data a b ——
即可恢复 保存过的 所有变量
mat文件是标准的二进制文件,还可以 ASCII码形式保存。
27
2.3 MATLAB运算
2.3.1算术运算 1.基本算术运算 MATLAB的基本算术运算有:+(加)、-(减)、 *(乘)、/(右除)、\(左除)、^(乘方)。 (1) 矩阵加减运算 假定有两个矩阵A和B,则可以由A+B和A-B实 现矩阵的加减运算。运算规则是:若A和B矩阵的 维数相同,则可以执行矩阵的加减运算,A和B矩 阵的相应元素相加减。否则给出错误信息,提示 用户两个矩阵的维数不匹配。
1.41421356237310e+000
3ff6a09e667f3bed 1.41 1395/985
最优化长格式,15位加指数
十六进制 货币银行格式,小数点后两 位 有理格式
format +
+
紧密格式,显示数据+,-,0
10
2.2 MATLAB矩阵
2.2.1 矩阵的建立 建立矩阵可以用:直接输入法、利用函数 建立矩阵和利用M文件建立矩阵。 1. 直接输入法 将矩阵的元素用方括号括起来,按矩阵行 的顺序输入各元素, 同一行的各元素之间用 空格或逗号分隔,不同行的元素之间用分号 分隔 (也可以用回车键代替分号) 。
13
4.利用冒号表达式建立一个向量
格式是:e1:e2:e3,
其中e1为初始值,e2为步长,e3为终止值。 还可用linspace函数产生行向量。其调用格式 为: linspace(a,b,n) 其中a和b是生成向量的第一个和最后一个元素, n是元素总数。 显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价。 5.建立大矩阵 大矩阵可由方括号中的小矩阵或向量建立起来。
MATLAB的数值运算
矩阵元素所处的行号和列 号称为该元素的下标。 A(i, j) 即表示矩阵A的第i 行第j各元素。
Matlab矩阵的下标的行、列号都是从1开始的。
3)矩阵的保存——数据的读写
使用MATt的文件,是
MATLAB保存数据的一种标准 save —— 将工作空间中所有的变量存到 格式的二进制文件 matlab.mat文件中 save filename——将工作空间中所有的变量存到 filename.mat文件中 save filename a b ——将工作空间中a和b变量存到 filename.mat文件中
当n=m时,此方程成为“恰定”方程 当n>m时,此方程成为“超定”方程 当n<m时,此方程成为“欠定”方程
“恰定”方程情况 方法: x=inv(a)b — 采用求逆运算解方程 x=a\b — 采用左除运算解方程
小
结
本节介绍了matlab语言的数值运算 功能,通过学习应该掌握:
如何创建矩阵、修改矩阵 符号的用法 矩阵及数组运算 多项式运算 线性方程组
6)Matlab的常用矩阵运算函数
max —— 各列最大值 mean —— 各列平均值 sum —— 各列求和 std —— 各列标准差 var —— 各列方差 sort —— 各列递增排序
7)矩阵的一些特殊操作
矩阵的变维 reshape(a,3,4) 矩阵的变向
rot90:旋转; fliplr:上翻; flipud:下翻
Load:用户在使用MATLAB的时候将以MAT文
件保存的矩阵重新装载到MATLAB的工 作空间中。命令格式为:
load 路径\文件名
2)矩阵的修改
第二讲-matlab数学建模之数值计算
1统计与分析 1. 求向量与矩阵最大元素和最小元素 (1)求向量的最大值和最小值 求一个向量X的最大元素的函数有两种调用格式,分别为 ①y=max(X) 返回向量X的最大元素,存入y。 ②[y,k]=max(X) 返回向量X的最大元素,存入y,最大 元素的序号存入k。 求向量X的最小元素的函数为min(X),调用格式与max(X) 相同。
对于向量X,std(X)返回一个标准方差。 对于矩阵A,std(A)返回一个行向量,它的各个元素便是矩阵A 各列的标准方差。 std函数的一般调用格式为: Y=std(A,flag,dim) 其中dim取1或2。 当dim=1时,求各列元素的标准方差; 当dim=2时,求各行元素的标准方差。 flag取0或1, 当flag=0时,按S1所列公式计算标准方差, 当flag=1时,按S2所列公式计算标准方差。 注: 缺省flag=0,dim=1。
20
5. 排序 在MATLAB中,提供了排序函数sort 。 对于向量X, sort(X)返回一个 对X中的元素按升序排列的新向量。 对于矩阵A, sort(A)返回一个行向量,它的各个元素是矩阵A各列 按升序排列的新向量。 std函数的一般调用格式为: [Y,I]=sort(A,dim) 其中dim指明对A的列还是行进行排序。 若dim=1,则按列排;通常简写 sort(A) ; 若dim=2,则按行排。 Y是排序后的矩阵,而I记录Y中的元素在A中位置。 注:对X的每列按降序排序, >> -sort(-X) 对A的每列按降序排序, >> -sort(-A)
19
例 对二维矩阵x,从不同维方向求出其标准方差。 命令如下:
>> x=[4,5,6;1,4,8] x= 4 5 6 1 4 8 >> y1=std(x,0,1) %等同于std(x),按S1 求各列元素的标准方差 y1 = 2.1213 0.7071 1.4142 >> y2=std(x,1,1) %按S2 求各列元素的标准方差 y2 = 1.5000 0.5000 1.0000 >> y3=std(x,0,2) %按S1 求各行元素的标准方差 y3 = 1.0000 3.5119 >> y4=std(x,1,2) %按S2 求各行元素的标准方差 y4 = 0.8165 2.8674
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
还有伴随矩阵、稀疏矩阵、魔方矩 阵、对角矩阵、范德蒙等矩阵的创建, 就不一一介绍了。 注意:Matlab严格区分大小写字母,因 此a与A是两个不同的变量。 Matlab函数名必须小写。
8. 矩阵的数组运算
数组运算指元素对元素的算术运算, 与通常意义上的由符号表示的线性代数 矩阵运算不同 在Matlab中提供了如下的数组运算符: .+ .- .* .^ .\(./) .‘
注意:运算符中的小黑点绝对不能遗漏,否 则将不按数组运算规则进行计算。不管执行 什么数组计算,所计算结果数组总是与参与 运算的数组同维。数组运算中所有的二元运 算必须是同维的数组或者其中有一个是标量。 1. 数组加减(.+,.-) a.+b a.- b
A\B为方程AX=B的解 B/A为方程XA=B的解 A\B=inv(A)*B 而B/A=B*inv(A) B/A=(A’\B’)’
其中inv(B)表示矩阵B的逆。
4. 矩阵乘方—— a^n,a^p,p^a
a ^ p —— a 自乘p次幂
方阵 >1的整数 的整数
对于p的其它值,计算将涉及特征值 和特征向量,如果p是矩阵,a是标量 a^p使用特征值和特征向量自乘到p次 幂;如a,p都是矩阵,a^p则无意义。
例:矩阵函数和数组函数运算的区别 B=[1/6,1/2;1/3,5/6]*pi >> sinb=sin(B) sinb = 0.5000 1.0000 0.8660 0.5000 >> fsinmb=funm(B,'sin') fsinmb = -0.0849 0.0000 0.0000 -0.0849
例:提取矩阵的子阵
B=magic(5) B1=B(1:2,[1,3,5]) B2=B([3,1],:) B([1,3],[2,4])=zeros(2)
6.矩阵的一些特殊操作
矩阵的变维 a=[1:12],b=reshape(a,3,4) %b为3行4列 c=zeros(3,4);c(:)=a(:) 矩阵的变向 rot90:旋转(逆时针); fliplr:左右翻; flipud: 上下翻 矩阵的抽取 diag:抽取主对角线;tril: 抽取主下三角; triu:抽取主上三角
2. 数组乘除(.∗,./,.\) a.∗b —— a,b两数组必须有相同的行 和列两数组相应元素相乘。
伴随矩阵--将状态空间模型转换为可控 标准形 compan(p) 获得多项式P的伴随矩阵 p=[1 2 3],a=compan(p) p= 1 2 3 a= -2 -3 1 0
格雷姆(Gram)矩阵-计算可控性和可观性 格雷姆阵 Gc=gram(G,’c’) 计算稳定系统G的可控性 格雷姆矩阵Gc Go=gram(G,’o’) 计算稳定系统G的观测性 性格雷姆矩阵Go
3. 矩阵的修改
直接修改 可用↑键找到所要修改的矩阵,用←键 移动到要修改的矩阵元素上即可修改。 指令修改 可以用A(∗,∗)= ∗ 来修改。
3)由矩阵编辑器修改 由Matlab提供工具栏按钮来查看工作区变量 单击变量,可以打开或 删除变量 打开后得到如下图, 点击矩阵元素,修改即可
例如 a=[1 2 0;3 0 5;7 8 9] a =1 2 0 3 0 5 7 8 9 a(3,3)=0 a =1 2 0 3 0 5 7 8 0
对于第一种形式,计算结果系统自动赋 值给名为ans的变量,ans永远只保存最 近一次的表达式的运算结果 对于第二种形式,系统将右边的表达式 的结果赋值给左边的变量,然后在屏幕 上显示出来 注意:表达式末尾的;
数字表达 Matlab的数值采用十进制表示,可以使 用科学计数法,用e表示位数。 Matlab常用运算符 + - * /(右除)
矩阵元素
矩阵元素可以是任何Matlab表达 式 ,可以是实数 ,也可以是复 数,复数可用特殊函数i,j 输入 a=[1 2 3;4 5 6] x=[2 pi/2;sqrt(3) 3+5i]
符号的作用
逗号和分号的作用 ♣逗号和分号可作为指令间的 分隔符,Matlab允许多条语句在 同一行出现。 ♣分号如果出现在指令后,屏 幕上将不显示结果。
Matlab常用的三角函数
有:sin(x),cos (x),tan (x), asin (x),acos (x),atan (x)等
三、矩阵的创建
1、创建矩阵的方法 、
直接输入法 规则: 1 矩阵元素必须用[ ]括住 2 矩阵元素必须用逗号或空格分隔 3 在[ ]内矩阵的行与行之间必须 用分号分隔
注意:只要是赋过值的变量,不管是否在 屏幕上显示过,都存储在工作空间中, 以后可随时显示或调用。变量名尽可能 不要重复,否则会覆盖 。 当一个指令或矩阵太长时,可用•••续 行
冒号的作用 用于生成等间隔的向量,默认间 隔为1。 用于选出矩阵指定行、列及元素。 循环语句
2.用Matlab函数创建矩阵
四、数据的存与获取
把Matlab工作空间中一些有用的数 据长久保存下来的方法是生成mat数 据文件。 save —— 将工作空间中所有的变 量存到Matlab.mat文件中。
save data——将工作空间中所有的变量 存到data.mat文件中。 save data a b ——将工作空间中a和b变 量存到data.mat文件中。 下次运行Matlab时即可用load指令调用 已生成的mat文件。
A=[1 2 3;4 5 6;7 8 0] deta=det(A) ranka=rank(A) tracea=trace(A) eiga=eig(A) >>deta =27 ranka =3 tracea = 6 eiga = 12.1229 -0.3884 -5.7345
注意:funm函数的问题 f=funm(A,’fun’)对于方阵A,计算用函 数‘fun’定义的矩阵函数,例如: funm(A,’sin’) 就是计算矩阵A的sin函数。 funm使用的算法有潜在的不稳定性,如果 A是接近于一个多重特殊值和病态特征向 量的矩阵,它会产生不精确的值,Matlab 系统会因此出现警告的信息,但是有时候 出现正确结果时,也会出现警告信息。
7、特殊的应用矩阵
在控制系统分析和设计中,应用一些特殊的矩阵 约当阵--将状态空间模型转换为约当标准形 形式:jordan(a) 得到矩阵a的约当标准形 [V,J]=jordan(a) J为约当标准形,V为相似变换阵,满足 V\a*V=J. 例:a=[1,2;3,4];J=jordan(a),[V,JJ]=jordan(a) a=[1,2;3,4];J=jordan(a),[V,JJ]=jordan(a) J= 5.3723 0 0 -0.3723 V = 0.2389 0.7611 0.5222 -0.5222 JJ = 5.3723 0 0 -0.3723
空阵 [ ] — Matlab允许输入空阵,当一项操作 无结果时,返回空阵。 rand —— 随机矩阵 eye —— 单位矩阵 zeros ——全部元素都为0的矩阵 ones ——全部元素都为1的矩阵 diag ——产生对角阵
例:0~1分布的随机矩阵,用rand函数 可以产生任意行列的的0~1分布的随机 矩阵
二、Matlab的基本计算功能 的基本计算功能
常用基本数学函数 函数名称 abs(x) angle(z) sqrt(x) real(z) imag(z) conj(z) round(x) flx(x) rat(x) 函数功能 取绝对值 复数的相角 开平方 复数的实部 复数的虚部 共轭复数 四舍五入取整 无论正负,舍去小 数取整 将实数化为分数 函数名称 sign(x) rem(x,y) gcd(x,y) lcm(x,y) exp(x) pow2(x) log(x) log2(x) log10(x) 函数功能 符号函数 x/y取余 最大公因数 最小公倍数 自然指数 2的指数 自然对数 以2为底的对数 以10为底的对数
\(左除)^(幂)
2、Matlab的变量
变量名可以是字母或数字,但首字必 须是字母. Matlab对变量名的大小写敏感,大 小写代表不同的变量. 显示结果的缺省格式是5位有效数字, 可以用命令format改变输出格式,如: format short e; format long e。 Matlab可以响应键盘输入,用“input” 命令: x=input(‘please input x: ’)
a=[1,2,3;4,5,6;7,8,9];a^2 ans =30 36 42 66 81 96 102 126 150
※当一个方阵有复数特征值或负实 特征值时,非整数幂是复数阵。
a^0.5 ans =
0.4498 + 0.7623i 0.5526 + 0.2068i 0.6555 -0.3487i 1.0185 + 0.0842i 1.2515 + 0.0228i 1.4844 - 0.0385i 1.5873 - 0.5940i 1.9503 - 0.1611i 2.3134 + 0.2717i
2. 矩阵乘(∗)运算
规则: A矩阵的列数必须等于B矩阵的行数 标量可与任何矩阵相乘。 a=[1 2 3;4 5 6;7 8 0];b=[1;2;3];c=a*b c =14 32 23
d=[-1;0;2];f=pi*d f = -3.1416 0 6.2832
3. 矩阵除( \,/)运算
矩阵除的运算在线性代数中没有,有矩阵逆 的运算,在Matlab中有两种矩阵除运算: \左除 /右除
5. 矩阵的其它运算
’ —— 矩阵转置(共轭)
6.矩阵标识和子矩阵
矩阵的子矩阵可以通过标量、向量、冒号的标识来 引用和赋值。 子阵序号向量标识方式A(v,w) v,w可以是任何排列的向量,也可以是“:”,它 表示全部行(在V的位置)或全部列(在w的位 置)。 “0~1”向量标识方式A(L1,:)、 A(:,L2)、 A (L1,L2) 向量L1,L2的长度分别为矩阵A的行数和列数,向量 L1,L2中的元素取1(表示提取相应的行或列)或0 (不提取)