MATLAB矩阵及矩阵操作
数值数组(Numeric Array)和数组运算(Array Operations)始终是MATLAB的核心内容。自MATLAB5.x版起,由于其“面向对象”的特征,这种数值数组(以下简称为数组)成为了MATALB最重要的一种内建数据类型(Built-in Data Type),而数组运算就是定义在这种数据结构上的方法(Method)。
本节系统阐述:一、二维数值数组的创建、寻访;数组运算和矩阵运算的区别;实现数组运算的基本函数;多项式的表达、创建和操作;常用标准数组生成函数和数组构作技法;高维数组的创建、寻访和操作;非数NaN、“空”数组概念和应用;关系和逻辑操作。
顺便指出:(1)本章所涉内容和方法,不仅使用于数值数组,而且也将部分地延伸使用于在其他数据结构中。
一、 变量和数据
1 数据类型
MATLAB7.3定义了15种基本的数据类型
1.1 建立double类型数据:例:(注:double为系统默认数据类型)
a=3.3
a =
3.3000
小结查看数据类型方法
方法一:whos 要查看的变量名 注:查看多个变量时各变量之间用空格分开,不能用逗号分开
例:查看上面定义的变量a
whos a
Name Size Bytes Class
a 1x1 8 double array
Grand total is 1 element using 8 bytes
方法二:使用class函数,函数调用常用格式: str = class(object) ——函数返回object的类型
例:class(a)
ans =
double
方法三:使用isa函数,函数调用常用格式: n = is(object,'类型')——函数返回值为1,说明object为第二个参数指定的类型,0表示不是。
例:isa(a,'double')
ans =
1
isa(a,'char')
ans =
0
1.2建立其他数值类型数据的方法
● 使用single、int_、uint_分别建立单精度、有符号整型、无符号整型的数据
例:
b=single(a)%建立单精度变量b
b =
3.3000
whos a b %查看变量a b的详细信息
Name Size Bytes Class
a 1x1 8 double array
b 1x1 4 single array
Grand total is 2 elements using 12 bytes
class(b) %获取变量b的数据类型
ans =
single
isa(b,'single')
ans =
1
c=int8(a) %尝试把变量a的值改为3.8,看结果有何变化,得出什么结论?
c =
3
class(c)%获取变量c的数据类型
ans =
int8
isa(c,'int8')
ans =
1
结论:a的值改为3.8后变量c的值变为4,说明在MATLAB中将一个浮点型数据转换为整型数据是遵循“四舍五入”的法则
2、数值
● 需了解MATLAB表达方式的组成、类型
● 了解数组(array)、矩阵(matrix)、向量(vector)、标量(数字)(scalar)的概念和它们之间的关系。
● 标量和向量是矩阵的特例,而矩阵是数组的特例。
● 复数(complex)和复数矩阵——实数矩阵是复数矩阵的特例,虚部为0
MATLAB把复数作为一个整体处理,虚数单位用自定义变量i或j表示。
(1)复数标量
z=3.4+34i
z =
3.4000 +34.0000i
z=3.4+34j
z =
3.4000 +34.0000i
z=3.4+i34
??? Undefined function or variable 'i34'.
z=3.4+j34
??? Undefined function or variable 'j34'.
z=3.4+i*34
z =
3.4000 +34.0000i
z=3.4+j*34
z =
3.4000 +34.0000i
结论:在创建复数(complex)和复数矩阵时,若虚部为常数,放在系统自定义变量i或j之前可省略星号(*),但若放在其后则不能省略
a=3.4;b=9;
r=a+bi
??? Undefined function or variable 'bi'.
r=a+bj
Usage: M = bj(Data,Orders);
M = bj(Data,Orders,Prop/Value pairs).
r =
[]
r=a+jb
??? Undefined function or variable 'jb'.
r=a+i*b
r =
3.4000 + 9.0000i
r=complex(a,b)
r =
3.4000 + 9.0000i
结论:在创建复数(complex)和复数矩阵时,若虚部为变量,则与系统自定义变量i或j之间必须加星号(*),无论其在前还是在后。另:complex(a,b)可将实数矩阵a,b构成复数矩阵a+b*i.
(2)复数矩阵——矩阵元素是复数
方法:
1)直接输入法
例:在MATLAB环境下,用下面三条指令创建复数矩阵C。
a=2.7358; b=33/79;
C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i]
C =
1.0000 5.4716 + 0.4177i 0.6909
0.7071 4.8244 3.5000 + 1.0000i
whos C
Name Size Bytes Class
C 2x3 96 double array (complex)
Grand total is 6 elements using 96 bytes
!!!注意:复数矩阵单个元素所占的字节数为16,而实数矩阵单个元素所占的字节数为8
2)由实部和虚部间接创建
例:复数数组的另一种输入方式。
M_r=[1,2,3;4,5,6]
M_r =
1 2 3
4 5 6
M_i=[11,12,13;14,15,16]
M_i =
11 12 13
14 15 16
则复数矩阵可由下面两种方式创建,必须保证上面两个矩阵大小是相同的
CN1=M_r+i*M_i
CN1 =
1.0000 +11.0000i 2.0000 +12.0000i 3.0000 +13.0000i
4.0000 +14.0000i 5.0000 +15.0000i 6.0000 +16.0000i
CN2=complex(M_r,M_i)
CN2 =
1.0000 +11.0000i 2.0000 +12.0000i 3.0000 +13.0000i
4.0000 +14.0000i 5.0000 +15.0000i 6.0000 +16.0000i
(3)MATLAB提供的复数和复数矩阵操作函数
复数直角坐标表示和极坐标表示之间转换的MATLAB指令如下:
real(z) z的实部a=rcosθ
imag(z) z的虚部b=rsinθ
abs(z) z的模r=√(a2+b2)
angle(z) z的相角θ=arctg(b/a)
求其共轭的函数为:
conj(z) z的共轭a-bi
如果z是复数矩阵,则上述函数是对矩阵里的每个元素做同样的操作。
二、MATLAB矩阵(二维数组)的创建——共6种方法
1、直接输入矩阵元素法
对于一般较小的简单的矩阵,用户可以从键盘上直接输入一系列的元素生成矩阵。
规则:
⏹ 矩阵元素必须用[ ]括住
⏹ 矩阵元素必须用逗号或空格分隔
⏹ 在[ ]内矩阵的行与行之间必须 linspace函数调用的格式为用分号(;)或Enter键分隔
例:在MATLAB中创建矩阵
矩阵元素可以是任何matlab表达式 ,可以是实数 ,也可以是复数
实现方法如下:
A=[1 2 3;4 5 6]
A=[1,2,3;4,5,6]
A=[1 2 3
4 5 6]
练习:在MATLAB中创建矩阵
总结:如何获取一个已建立矩阵的信息?
调用MATLAB提供的函数——class(),size(),length(),ndims()
class(A)%类型
ans =
double
size(A)%大小
ans =
2 3
length(A)%长度
ans =
3
ndims(A)%维数
ans =
2
2、利用冒号表达式建立一个向量
冒号表达式可以产生一个行向量,一般格式是:
其中e1为初始值,e2为步长缺省为1,e3为终止值。
注意:该方法产生的行向量的最后一个元素的值小于等于e3,并不一定是e3
例如:1:6:5
ans =
1
在MATLAB中,还可以用linspace函数产生行向量。其调用格式为:linspace(a,b,n)
其中a和b是生成向量的第一个和最后一个元素,n是元素总数。
其中a和b是生成向量的第一个和最后一个元素,n是元素总数。
显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论