第2章基础知识
本章着重介绍MATLAB的一些基础知识,包括数据类型、基本矩阵操作、运算符和字符串处理函数。本章是MATLAB编程的基础。
2.1 数据类型
MATLAB中定义了很多种数据类型,包括字符、数值、单元、结构、java类、函数句柄等类型,用户还可以自己定义数据类型。
在MATLAB中有15种基本数据类型,每种基本数据类型均以数组/矩阵的形式出现,该矩阵可以是最小的0*0矩阵到任意大小的n维矩阵。
1.数值类型
数值类型包含整数、浮点数和复数3种类型。另外MATLAB还定义了Inf和NaN两个特殊数值。
(1)整数类型
MATLAB支持1、2、4和8字节的有符号整数和无符号整数。这8种数据类型的名称、表示范围、转换
函数如表2-1所示,其中转换函数可以把其它数据类型的数值强制转换为对应的整数类型。尽可能使用字节少的数据类型,这样可以节约存储空间和提高运算速度。
表2-1 整数类型
名称范围转换函数名称范围转换函数
有符号1字节整数int8() 无符号1字节整数uint8()
有符号2字节整数int16() 无符号2字节整数uint16() 有符号4字节整数int32() 无符号4字节整数uint32() 有符号8字节整数int64() 无符号8字节整数uint64()
(2)浮点数类型
MATLAB有单精度和双精度两种浮点数,其中双精度浮点数为MATLAB默认的数据类型。这2种数据类型的名称、存储空间、表示范围和转换函数如表2-2所示。
表2-2 浮点数类型
名称存储空间表示范围转换函数
单精度浮点数4字节single()
双精度浮点数8字节double() (3)复数类型
复数包含实部和虚部。在MATLAB中可以用i或j来表示虚部。
例如:在命令窗口中用赋值语句产生复数5+10i,代码如下:
A=5+10i
例如:在命令窗口用函数complex()产生复数5+10i,具体代码如下:
X=5;
Y=10;
z=complex(x,y)
(4)Inf和NaN
在MATLAB中用Inf和-Inf分别表示正无穷大和负无穷大。除法运算中除数为0或者运算结果溢出都会导致inf或-inf的运行结果。
在MATLAB中用NaN(not a number)来表示一个既不是实数也不是复数的数值。类似0/0、inf/inf等运算产生的结果均为NaN。
2.逻辑类型
在MATLAB中逻辑类型包括true和false,分别由1和0表示。在MATLAB中用函数logical()将任何非零的数值转换为true(即1),将数值0转换为false(即0)。
3.字符和字符串类型
在MATLAB中,数据类型(char)表示一个字符。一个char类型的1*n数组称为字符串string。用单引号对表示字符串。
例如:str=‘I am a great person’
也可以用char()函数构造字符串。例如:str=char([65 66])
4.结构体类型
结构体类型是一种由若干属性(field)组成的MATLAB数组,其中的每个属性可以是任意数据类型。
例如:personel结构体,包括3个属性(Name、Score和Salary),其中Name是一个字符串,Score是一个数值,Salary是一个1*5的向量。
(1)结构体数组的构造
构造一个结构体(数组)有如下两种方法。
#利用赋值语句
通过赋值语句为结构体中的每个指定属性赋值,从而构造结构体。
例如:建立‘Clayton’、98.5、工资为4500 5100 5600 5200 4800的结构体。
Personel.Name=’Clayton’;
Personel.Score=98.5;
personel.Salary=[4500 5100 5600 5200 4800];
personel
personel(2).Name=’dana’;
personel(2).Score=100;
零基础学java编程personel(2).Salary=[6700 9000];
personel
#利用函数struct()
在MATLAB中,函数struct()的具体用法如下:
StrArray=struct(‘field1’,val1,’field2’,val2,……)
例如:
Personel=struct
(’Name’,{‘Clayton’,’Dana’,’John’},’Score’,{98.5,100,[]},’Salary’,{[450 0 5100 5600 5200 4800],[6700 9000],[]})
(2)结构体数组的访问
通过结构体数组的下标引用,可以访问任意元素的所有属性,同时可以对属性进行赋值。
2.2 基本矩阵操作
在MATLAB中,所有的数据均以二维、三维或高维矩阵的形式存储,每个矩阵的单元可以是数值类型、逻辑类型、字符类型或者其他任何数据类型。对于标量,可以用1*1矩阵来表示,对于一组n个数据,可以用1*n矩阵来表示;对于多维数组,可以用多维矩阵来表示。
在MATLAB中,可以用whos来显示数据的类型、存储空间等信息。
2.2.1 矩阵的构造
1.简单矩阵构造
最简单的方法是采用矩阵构造符[]。构造1*n矩阵(行向量)时,可以将各元素依次放入矩阵构造符[]内,并以空格或者逗号分隔;构造m*n矩阵时,每行如上处理,并且行与行之间用分号分隔。
例如:a=[1 2 3 4] 或者a=[1,2,3,4]
例如:b=[1 2 3; 4 5 6] 或者b=[1,2,3;4,5,6]
2.特殊矩阵构造
在MATLAB中还提供了一些函数用来构造特殊矩阵。
ones(n)或ones(m,n):产生矩阵元素全为1的矩阵。
zeros(n)或zeros(m,n):产生矩阵元素全为0的矩阵。
eye(n):产生单位矩阵,即主对角线上的元素为1,其他元素全为0。
diag(v):将向量转化为对角矩阵。
magic(n):产生魔方矩阵.
rand(n)或rand(m,n):产生0~1均匀分布的随机数。
randn(n)或randn(m,n):产生均值为0且方差为1的高斯分布随机数。
randperm(n):产生整数1~n的随机排列。
3.向量构造
最简单的方法是采用向量构造符:,其常用的用法如下。
(1)a:b 返回以a为起点,以1为步长,且所有取值在a与b之间的向量。如果b 值小于a值,则MATLAB返回一个空矩阵。
(2)a:s:b 返回以a为起点,以s为步长,且所有值在a与b之间的向量。
构造向量还可以采用函数linspace()、logspace()等,如函数linspace()用于创建指定范围和步长的等距向量。
例如:a=linspace(-6,6,4)
2.2.2 矩阵大小的改变
1.矩阵的合并
矩阵的合并就是把两个或两个以上的矩阵连接成一个新矩阵。前面介绍的矩阵构造符[]不仅可以用于构造矩阵,还可以作为一个矩阵合并操作符。表达式C=[A B]在水平方向合并矩阵A和B,而表达式C=[A;B]在竖直方向合并矩阵A和B。
注意:矩阵合并时要符合维数的约束。如果水平方向合并,则两个矩阵行数必须相同;如果竖直方向合并,则两个矩阵列数必须相同。
矩阵合并除了使用合并符[]外,还可以使用矩阵合并函数。矩阵合并函数的描述和基本
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论