nullMATLAB语言及应用MATLAB语言及应用 电气学院 叶满园
myye@4y.com.cn第二章 MATLAB数据及其运算第二章 MATLAB数据及其运算2.1矩阵及其赋值
2.1.1 矩阵
MATLAB中最基本的数据结构是矩阵(matrix)。
1*1的矩阵----标量(scalar): [5]
只有一行或一列的矩阵-----向量(vector):
[1 3 5 7]
行向量列向量3*3矩阵MATLAB中一个有趣的例子MATLAB中一个有趣的例子 左图所示的为文艺复兴时期德国一个画家兼业余数学家创作的版画,其右上角有一个矩阵。魔方阵魔方阵16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 12.1.2 矩阵元素赋值2.1.2 矩阵元素赋值 矩阵不需维数说明和类型定义,存储单元完全由计算机自动分配。每个变量代表一个矩阵,矩阵的每个元素都看作复数,默认的数据类型为双精度型。
(1)输入矩阵最简单的
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
是输入矩阵的元素表,
每行的元素之间用空格或逗号隔开,
用“;”号作为元素表中每一行的结束符,
并用[ ]将元素表括起来。
例如,在命令窗口输入语句:
>>a=[1 2 3;4 5 6;7 8 9]
则结果为:a = 1 2 3
4 5 6
7 8 9??内存变量文件内存变量文件Save 文件名[变量名表] [-append] [-ascii]
load 文件名[变量名表] [-ascii]
将工作空间的变量am和D存储
Save mydata am D
Load mydata
常用预定义变量及其含义常用预定义变量及其含义
重点注意Inf在电容
参数
转速和进给参数表a氧化沟运行参数高温蒸汽处理医疗废物pid参数自整定算法口腔医院集中消毒供应
赋值时的应用
矩阵赋值的其它方式矩阵赋值的其它方式(2)向量的生成
向量的生成归纳为:from:step:to结构。
如: y=[0:2:10]
得: y=[0,2,4,6,8,10]
如果step=1,则可省略:
如: x=1:5
则生成一个行向量, x=[1 2 3 4 5 ]
(3)向量还可以采用linspace函数产生
linspace(a,b,n)
★注意上述两种方法的区别!
null(4)从外部数据文件装载矩阵
(5)使用函数或程序生成矩阵:如ones(3,2), magic(3)等2.1.3 矩阵元素的使用2.1.3 矩阵元素的使用>>x=a(1,3) +a(2,2) +a(3,1)
矩阵变量名(下标或序号)
a(3,2)=8 (或a(6)=8 );
下标(Subscript): (行号,列号),行号从上到下,列号从左到右。
序号(Index):矩阵元素的存储是按列进行的,顺序是从上到下,从左到右。a = 1 2 3
4 5 6
7 8 92.1.4 矩阵拆分2.1.4 矩阵拆分(1)取子矩阵
在一个下标处单独一个冒号,表示取出该下标处所对应的全部行或列。
a( : , k ) 表示取矩阵a的第k列全部元素。
a( m , : ) 表示取矩阵a的第m行全部元素。
a( m : m+k , :) 表示取a矩阵的第m~m+k行元素的全部元素 。
a( : ) 将矩阵a 的所有元素按列堆叠起来,成为一个列向量。null例如:
b=a(:,3) %取出A矩阵的第三列。
(注:%为注释符)
c= a(1:2,:) %取出A矩阵的1到2行。
d= a(1:2,1:2)%取出A矩阵1到2行的1至2列。null(2)利用空矩阵删除矩阵的元素
a=[ ]
a的维数为0。
例:a( 2 , : )= [ ];
得:
a =
8 1 6
4 9 22.1.5 复数(Complex Number)操作2.1.5 复数(Complex Number)操作复数由实部(real part)和虚部(imaginary part)组成。
虚数单位用i或j来表示。
6+5i = 6+5j
例:
R = [1,2;4,5];
I = [6,7;8,9];
ri=R+i*I
ri =
1.0000 + 6.0000i 2.0000 + 7.0000i
4.0000 + 8.0000i 5.0000 + 9.0000i
或:ri=[1+6i,2+7i;4+8i,5+9i]2.2 表达式(Expressions)2.2 表达式(Expressions) 表达式表达式由变量、常量、运算符和函数组成。
MATLAB对键入的表达式进行翻译和计算,语句的形式通常为:
变量=表达式;
或简单地写作:表达式;
;分号是可选的,如果该语句的最后一个字符是分号,则在执行词句时不在屏幕上显示结果。
>> rho = (sqrt(5)-1)/2
得:rho =0.6180
>> a = abs(3+4i)
得:a =5
若一个表达式太长,可用三个句号将其延伸到下一行:
>> z = 10*sin(pi/3)* ...
sin(pi/3);2.2.1 变量(Variables)2.2.1 变量(Variables) 变量无需类型及维数说明,变量命名
规则
编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf
如下:
1、变量名对大小写敏感。(a与A是两个不同的变量)
2、变量名的首字符必须是字母。
3、函数的命名规则与变量相同。
4、变量名应避免使用系统的关键字。如for,while等.
例如:变量、函数或m文件命名为
2x 1.m if
则会出错。
whos:显示当前工作空间(Work Space)中所有变量的一个简单列表。
clear:可以删除工作空间的变量。2.2.2 常量(Numbers)2.2.2 常量(Numbers)一些数的例子:
3 -99 9.6397238
1.60210e-20 6.02252e23
-3.14159j 3e5i pi
使用命令>>format type,来控制数的显示格式。数字显示的格式数字显示的格式2.2.3运算符(Operators )2.2.3运算符(Operators )2.2.4 函数(Functions )2.2.4 函数(Functions )除了MATLAB提供的大量的函数,用户还可以自定义函数。随着这门课程的学习,同学们要不断积累一些常用的函数。
学习和使用MATLAB的两把钥匙:
(1)help 函数或命令 例:help abs
(2)MATLAB的帮助系统。
“英语词典”的使用,比如求矩阵的特征值,查得为:eigenvalue,再在MATLAB Help中Search for :eigenvalue),就能得到相关的帮助。null练习1、一个运动的球在空中的位置由下式确定: 当x0=10m,v0=15m/s,a=-9.81m/s2,求当t=5s时,x=?>>x0=10;
>>v0=15;
>>a=-9.81;
>>t=5;
>>x=x0+v0*t+a*t^2/2
得x = -37.6250>>x = x0 + v0 * t + 1/2 * a * t^2null练习2、x=3,y=4,在MATLAB中求下式:>>x=3;
>>y=4;
>>z=x^2*y^3/(x-y)^2
得z =576>>z = x^2 * y^3 / (x - y)^2练习练习3、画出下面函数在0x 50范围内的图象。>>x = 0 : 0.1 : 20;
>>y=2 * exp( -0.2 * x );
>> plot( x , y )2.3 MATLAB的矩阵运算2.3 MATLAB的矩阵运算2.3.1 算术运算
(1)矩阵加减运算:
两个同维矩阵,才能进行加减运算,对应无素相加减。
一个标量与矩阵相加减时,结果为这个标量与矩阵的每一个元素相加减。
x=[2,-1,0;3 2 -4];
y=ones(2,3);
x-y=?
[1,-2,-1;2,1,-5]
x+1=?
[3,0,1;4,3,-3] (2)矩阵乘法(2)矩阵乘法 满足a的列数等于b的行数,则e=a*b;
一个标量与矩阵相乘时,结果为这个标量与矩阵的每一个元素相乘。
如: x=[1,3,1;
2,3,1];
y=[1,2;
3,0;
7,4];
z=x*y , w=2*x
z=? w=?
[17,6;18,8]
[2,6,2;4,6,2](3) 矩阵除法(3) 矩阵除法 在线性代数中,本没有矩阵除法,它是由逆矩阵引申来的。
MATLAB中,矩阵求逆(Matrix inverse)的函数为:
Y = inv(X)
方程A*X=B的解为:X=inv(A)*B=A\B,
A\B称为A左除B,左除时要求两矩阵行数相等。
方程X*A=B的解为:X=B*inv(A)=B/A,
A/B称为A右除B,右除时要求两矩阵列数相等。求解线性方程求解线性方程6x1+3x2+4x3=3
-2x1+5x2+7x3=-4
8x1-4x2-3x3 =-7A=[6 3 4;-2 5 7;8 -4 -3];
b=[3;-4;-7];x=A\b
x =
0.6000
7.0000
-5.4000(4)矩阵的乘方(4)矩阵的乘方 一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。 例如:
A=[1,2;4,5];
B=A^2
C=A^0.5
得:B=[9,12;24 ,33]
C=[0.5373 + 0.5373i,0.7339 - 0.1967i
1.4679 - 0.3933i, 2.0052 + 0.1440i]
A=C*C(5)矩阵点运算(5)矩阵点运算 矩阵中对应元素进行运算,要求两个矩阵的维数相同。
设X=[1 2 3];Y=[4 5 6];矩阵乘法与点乘矩阵乘法与点乘null 点运算是MATLAB很有特色的运算,在实际应用中起着很重要的作用。
当x=-2*pi:0.01:2*pi,求y=sinx*cos8x的值。
x =-2*pi : 0.01 : 2*pi
y=sin(x)*cos(8*x) ??? y=sin(x).*cos(8*x)(6) 常用数学函数(6) 常用数学函数三角函数以弧度为单位计算。
fix:向零方向取整
floor:不大于自变量的最大整数
ceil:不小于自变量的最小整数
round:四舍五入到最邻的整数
rem 求余数
mod 模运算null例:x=-2.65
floor(x) = -3
ceil(x) = -2
fix(x) = -2
round(x) = -3
x=2.45
floor(x) = 2
ceil(x) = 3
fix(x) = 2
round(x) = 2rem 与mod函数的区别rem 与mod函数的区别都需要x、y具有相同大小的实矩阵或标量
当y不为零时,rem(x, y)=x-y.*fix(x./y),而
mod(x, y)=x-y.*floor(x./y)
当y等于零时,rem(x, 0)=NaN
mod(x, 0)=x
显然当x和y符合相同时,两者结果相等;符合不同时,结果一般不相等。
2.3.2 关系运算2.3.2 关系运算Equal = =
Not equal ~ =
Less than <
Greater than >
Less than or equal <=
Greater than or equal >=
关系运算的结果只可能是0或1
0 表示该关系为假
1 表示该关系为真null关系运算的法则:
(1)比较量是标量:直接比较两数的大小。若关系成立,结果为1,否则为0。
(2) 比较量是两个同维矩阵:两矩阵相同位置的元素逐个比较。结果是一个维数与原矩阵相同的矩阵,其元素由0或1组成。
(3) 一个标量,一个矩阵:标量与矩阵的每一个元素逐个比较,结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。例:建立4阶方阵A,判断A的元素是否能被3整除例:建立4阶方阵A,判断A的元素是否能被3整除A=magic(4)
p=(rem(A,3)==0)
A =16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1rem(A,3)
1 2 0 1
2 2 1 2
0 1 0 0
1 2 0 1p =0 0 1 0
0 0 0 0
1 0 1 1
0 0 1 02.3.3逻辑运算2.3.3逻辑运算逻辑量只能取0(假)和1(真)两个值。逻辑运算法则逻辑运算法则(1)两个同维矩阵:矩阵相同位置上的元素按规则逐个进行。运算结果与原矩阵同维,其元素由1或0组成。
(2)一个是标量,一个是矩阵:标量与矩阵中的每个元素按规则逐个进行。运算结果与矩阵同维,其元素由1或0组成。
在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。逻辑运算符的优先级逻辑运算符的优先级例:
>>u =[0 0 1 1 0 1];
>>v =[0 1 1 0 0 1];
>>u | v
ans =
0 1 1 1 0 1例: u=p|~p
p和非p求或find函数find函数 功能:找出矩阵中非零元素的下标或序号。
I = FIND(EXPR)
[R,C] = FIND(EXPR) 例:建立矩阵A,找出在[10,20]区间的元素的位置。
A=[4, 15, -45, 10, 6 ; 56, 0, 17, -45, 0]
A =4 15 -45 10 6
56 0 17 -45 0
find(A>=10 & A<=20)
ans =
3
6
7nullA =4 15 -45 10 6
56 0 17 -45 0A>=10
ans =
0 1 0 1 0
1 0 1 0 0A<=20
ans =
1 1 1 1 1
0 1 1 1 1A>=10 & A<=20
ans =
0 1 0 1 0
0 0 1 0 0find(A>=10 & A<=20)
ans =
3
6
72.4 字符串2.4 字符串字符串:用单括号括起来的字符序列。字符串用ASCII码形式存储。
xm=‘East China Jiao Tong University’
MATLAB将字符串当作一个行向量,每个 元素对应一个字符。
也可以建立多行字符串矩阵,要求各行字符数相等。例:
ch=[ ‘abcdef’ ; ’123456’ ]null例:建立一个字符串向量,然后对该向量做如下处理
(1) 取第1~5个字符组成的子字符串。
(2) 将字符串倒过来重新排列。
(3) 将字符串中的小写字母变成相应的大写字母,其余字符不变。
(4) 统计字符串中小写字母的个数。
ch=‘ABc123d4e56Fg9’;
subch=ch(1:5) %取子字符串
revch=ch(end:-1:1) %将字符串倒排
k=find(ch>=‘a’&ch<=‘z’); %找小写字母的位置
ch(k)=ch(k)-(‘a’-‘A’); %将小写字母变成相应的大写字母
char(ch)
length(k) %统计小写字母的个数2.5结构数据和单元数据2.5结构数据和单元数据(1)结构数据
Matlab通过使用(Structure)数据类型把一组不同类型但同时又是在逻辑上相关的数据组成一个有机的整体,以便于管理和应用。
结构矩阵名. 成员名=表达式
例如建立一个含有3个元素的结构矩阵a:
a(1).x1=10;a(1).x2=‘liu’;a(1).x3=[11,21;34,78];
a(2).x1=12;a(2).x2=‘wang’;a(2).x3=[34,191;27,578];
a(3).x1=14;a(3).x2=‘cai’;a(1).x3=[13,890;67,231];
结构矩阵元素的成员也可以是结构数据。
结构矩阵的建立和引用结构矩阵的建立和引用a(2).x3 %引用矩阵元素a(2)的成员x3
ans=
34 191
27 578
a(2) %引用矩阵元素a(2)
ans=
x1: [1x1 struct]
x2: ‘wang’
x3: [2x2 double]
a %引用结构矩阵a
a=
1x3 struct array with fields:
x1
x2
x3结构矩阵的修改结构矩阵的修改可以根据需要增加或删除结构成员
a(1).x4=‘410075’
但其他成员均为空矩阵。
要删除结构成员,则可以采用rmfield函数来完成。
a=rmfield(a,’x4’)
关于结构的函数
Struct getfield rmfield isstruct fieldnames setfield
isfield利用simulink仿真数据形象地解释结构概念利用simulink仿真数据形象地解释结构概念单元矩阵的建立与引用单元矩阵的建立与引用建立单元矩阵采用大括号来完成
b={10,’liu’,[11,21;34,78];12,’wang’,[34,191;27,578];...
14,’cai’,[13,890;67,231]}
b=
[10] ‘liu’ [2x2 double]
[12] ‘wang’ [2x2 double]
[14] ‘cai’ [2x2 double]
单元变量的函数