3 进行数组运算的常用函数
在MATLAB中有一些常用函数,这些函数在日常的编程计算过程中会经常遇到,一般是基本的数学概念在MATLAB中的函数表达方式。这些函数在MATLAB中可以同时作用于整个矩阵或者数组,应用起来非常方便,不需要再另写循环程序来对各元素分别进行计算。掌握这些函数是进一步学习的基础。MATLAB人性化的地方在于其自带函数基本是按照相对应的英文名称缩写而来,所以便于记忆。
3.1 函数数组运算规则的定义
对于(m´n)的数组,函数的数组运算规则是指:
也就是说函数的数组运算是指将函数作用于矩阵中的每一个元素,并将最后的结果储存为与原矩阵行列数相同的矩阵。
3.2进行数组运算的常用函数
本小节列出进行数组运算的常用函数。常用基本数学函数见表2-2,常用三角函数见表2-3,常用适用于向量的函数见表2-4。
表2-2 MATLAB常用的基本数学函数函 数说 明函 数说 明
abs(x)纯量的绝对值或向量的长度rat(x)将实数x化为分数表示
angle(z)复数z的相角sign(x)符号函数 当x<0时,sign(x)=-1; 当x=0时,sign(x)=0; 当x>0时,sign(x)=1
sqrt(x)开平方rem(x,y)求x除以y的余数
real(z)复数z的实部gcd(x,y)整数x和y的最大公因数
imag(z)复数z的虚部lcm(x,y)整数x和y的最小公倍数
conj(z)复数z的共轭复数exp(x)自然指数
round(x)四舍五入至最近整数pow2(x)2的指数
fix(x)无论正负,向0的方向取最近整数log(x)以e为底的对数,即自然对数
floor(x)舍去法取最近整数log2(x)以2为底的对数
ceil(x)进一法取最近整数log10(x)以10为底的对数
表2-3 MATLAB常用的三角函数函 数说 明函 数说 明
sin(x)正弦函数sinh(x)超越正弦函数
cos(x)余弦函数cosh(x)超越余弦函数
tan(x)正切函数tanh(x)超越正切函数
asin(x)反正弦函数asinh(x)反超越正弦函数
acos(x)反余弦函数acosh(x)反超越余弦函数
atan(x)反正切函数atanh(x)反超越正切函数
atan2(x,y)四象限的反正切函数
表2-4 适用于向量的常用函数函 数说 明函 数说 明
min(x)向量x的元素的最小值norm(x)向量x的欧氏长度,也就是范数
max(x)向量x的元素的最大值sum(x)向量x的元素总和
mean(x)向量x的元素的平均值prod(x)向量x的元素总乘积
median(x)向量x的元素的中位数cumsum(x)向量x的累计元素总和
std(x)向量x的元素的标准差cumprod(x)向量x的累计元素总乘积
diff(x)向量x的相邻元素的差dot(x, y)向量x和y的内积
sort(x)对向量x的元素进行排序cross(x, y)向量x和y的外积
【例2-9】 数组运算示例。
>> a=[1 2 4 9;16 25 36 49]
a =
1 2 4 9
16 25 36 49
>> b=sqrt(a) % 应用函数对矩阵中的每一个元素分别开方
b =
1.0000 1.4142 2.0000 3.0000
4.0000 5.0000 6.0000 7.0000
4. 查询矩阵信息
在矩阵的使用过程中,经常需要查询某个矩阵的一些基本信息,比如行数、列数、总元素个数、各元素的数据类型等,这就需要我们掌握矩阵信息查询函数。
4.1 矩阵的形状信息
表2-5中的函数,可以用来查询一个矩阵形状的信息。
表2-5 矩阵形状信息函数名称函数功能函数名称函数功能
length返回矩阵最长的一维的长度numel返回矩阵的元素个数
ndims返回矩阵的维数size返回矩阵各维的长度
下面举例说明如何使用这些函数。
【例2-10】 查询矩阵形状信息示例。
>> rand('state', 0); % 设置随机种子,便于读者验证
>> A = rand(5) * 10 % 生成5´5的随机矩阵
A =
9.5013 7.6210 6.1543 4.0571 0.5789
2.3114 4.5647 7.9194 9.3547 3.5287
6.0684 0.1850 9.2181 9.1690 8.1317
4.8598 8.2141 7.3821 4.1027 0.0986
8.9130 4.4470 1.7627 8.9365 1.3889
>> A(4:5, :) = [] % 删除第4行和第5行
A =
9.5013 7.6210 6.1543 4.0571 0.5789
2.3114 4.5647 7.9194 9.3547 3.5287
6.0684 0.1850 9.2181 9.1690 8.1317
>> size(A)
ans =
3 5
>>a= length(A)
a =
5
>> b=sum(A(:))/numel(A) % 使用Sum和numel函数计算矩阵A的平均值
b =
5.8909
>> c=mean(mean(A)) % 使用mean函数验证矩阵A的平均值
c =
5.5388
4.2矩阵的数据类型
与其他编程语言类似,MATLAB提供有多种数据类型,相关内容将在第3章中介绍。本小节介绍用来查询数据类型的函数。
表2-6中的函数,可以用来查询一个矩阵中所用的数据类型。
表2-6 判断数据类型函数函数名称函数功能函数名称函数功能
isa查询输入矩阵是否是给定类型isinteger查询输入矩阵是否是整数数组
iscell查询输入矩阵是否是cell数组islogical查询输入矩阵是否是逻辑数组
iscellstr查询输入矩阵是否是由字符串构成的cell数组isnumeric查询输入矩阵是否是数值数组
ischar查询输入矩阵是否是字符串isreal查询输入矩阵是否是实数
isfloat查询输入矩阵是否是浮点数组isstruct查询输入矩阵是否是structure数组
4.3 矩阵的数据结构
表2-7中的函数,可以用来查询一个矩阵中所用的数据结构。
表2-7 数据的结构查询函数函数名称函数功能函数名称函数功能
isempty查询输入矩阵是否为空issparse查询输入矩阵是否是稀疏矩阵
isscalar查询输入矩阵是否是1´1标量isvector查询输入矩阵是否是向量