数据类型
MATLAB一共有15种数据类型,每一种数据类型都是以矩阵的形式或者数组形式,其最小值为0到0,最大值为无穷。
4.1变量与常量
4.1.1变量
变量是所有语言的基本元素之一,和其他语言不同的是,每个变量都是数组或矩阵,而且MATLAB并不要对变量进行声明,也不要指定变量类型,是一种弱类型的语言,使用时自动依据的值或者对变量进行的操作来识别变量的类型。
·变量名区分大小写
·变量名必须以字母开头,只有可以是字母、数字、下划线的一种或几种。
·变量名不能超过31个字符,第31个后面的字符可以省略。
4.1.2常量
常量是MATLAB语言本身提供的一种预定义的变量,如表中是MATLAB语言中常使用的一些常量
常量的名称 | 说明 |
ans | 默认变量 |
pi | 圆周率 |
NaN | 不定值 |
inf | 无穷大 |
realmin | 最小正浮点数 |
realmax | 最大正浮点数 |
i/j | 虚数单位 |
实例——默认变量展示
在命令行输入“1:10”,然后执行程序
>> 1:10
ans =
1 2 3 4 5 6 7 8 9 10
这里ans是指当前运行的结果,若当前的计算结果用户没有对其定义变量,系统就会自动将当前结果赋给ans变量。
4.2整型
在MATLAB数据类型中,按照有无符号可以分为有符号整数和无符号整数,按照字节数又可以分为8位、16位、30位和64位的整型数据。
不同的类型整型函数如下:
int8(x) | 有符号8位整型数据 |
int16(x) | 有符号16位整型数据 |
int32(x) | 有符号32位整型数据 |
int64(x) | 有符号的64位整型数据 |
uint8(x) | 无符号的8位整型数据 |
uint16(x) | 无符号的16位整型数据 |
uint32(x) | 无符号的32位整型数据 |
uint64(x) | 无符号的64位整型数据 |
实例——整型数据类型展示
>> a=int8(10)
a =
int8
10
>> b=int16(10)
b =
int16
10
>> c=int8(129)%有符号的八位整型数据最大是2^8-1=127,129超出
%了范围,所以显示127。
c =
int8
127
5.3浮点型
在MATLAB中的浮点类型数据中分为单精度浮点型和双精度浮点型,分为32位和64位,使用single()和double()函数定义和转换。默认状态下输入的数据为双精度浮点型。
浮点型只采用十进制,有两种形式,十进制数形式和指数形式。
·十进制形式,由数字0~9和小数点组成,比如:3.2, 3, 9, 0.33。
·指数形式,由十进制数和“e”或“E”组成,列如2.1E4就等于2.1*10^5。
列:不同浮点型的展示
>> y=single(33)
y =
single
33
>> x=double(2020)
x =
2020
>> z=20%默认双精度类型
z =
20
>> whos
Name Size Bytes Class Attributes
x 1x1 8 double
y 1x1 4 single
z 1x1 8 double
5.4逻辑类型
MATLAB的逻辑类型有两个值,“0”和“1”,分别代表“假”和“真”。逻辑类型数据通常用于查找和条件语句的判断。
逻辑类型数据的应用:
列:if语句的条件判断
>> c=5;
>> if c>5
disp('为真')
else
disp('为假')
end
为假
逻辑运算
>> x=[0 1 0 1 0 1];
>> ~x %逻辑非运算
ans =
1×6 logical 数组
1 0 1 0 1 0
4.5字符串
MATLAB中的字符串通常用于处理文本等字符类型。字符串可以理解为由字符组成的数组。在MATLAB中的字符存储与相应的ASCII码对应。
4.5.1一维字符串
在一对单引号的中间放置字符就可以组成字符串数据类型。字符串数据类型的每个字符占两字节内存。
列:一维字符串的生成
直接赋值:
>> str='abcde';%定义字符串str,赋值abcde;
>> class(str) %str为字符串类型的数据;
ans =
'char'
>> whos %每个字符占2字节的存储空间
Name Size Bytes Class Attributes
ans 1x4 8 char
str 1x5 10 char
连接法:通过连接函数strcat()或者连接符“[]”可将两段字符连接;
>> str='a good';
>> str1=' student';
>> str=strcat(str,str1)
str =
'a good student'
4.5.2二维字符串
二维字符串生成的方法类似与一维字符串,不过要使用“[]”连接。二维字符串规定每一行的字符的列数相同。如果不同会报错。
二维字符串的生成过程
例子:
>> str=['feel';'ab'] %列数不一样,报错。
要串联的数组的维度不一致。
>> str1=['feel';'good']
str1 =
2×4 char 数组
'feel'
'good'
字符串操作函数
字符串变量基本上在所有的编译环境中都有使用,MATLAB也为用户提供的许多处理字符串的函数,比如字符串的判断,查找,替换,比较和大小写的转行等;
1:字符串的判断
ischar(a):判断变量是否为字符串变量,,如果是返回“1”,反之返回“0”。
isletter(a):判断变量中每个字符的元素知否为字符,如果是返回“1”,反之返回“0”。
Isspce(a):判断变量中每个字符元素是否为空格,如果是返回“1”,反之返回“0”。
案例:
>> str2=['a S456','liu 5 ']
str2 =
'a S456liu 5 '
>> ischar(str2)
ans =
logical
1
>> isletter(str2)
ans =
1×14 logical 数组
1 0 1 0 0 0 1 1 1 0 0 0 0 0
>> isspace(str2)
ans =
1×14 logical 数组
0 1 0 0 0 0 0 0 0 1 1 0 1 1
2、字符串的访问:
如果想访问字符串中某个元素,通常根据字符元素的下标来访问:
案例:
>> str3=char('abc','def','love')
str3 =
3×4 char 数组
'abc '
'def '
'love'
>> str3(1,:)
ans =
'abc '
>> str3(2,1)%访问字符串中第二行第一列的元素
ans =
'd'
其他字符串函数
Strfind(str,a) | 从字符串str中找出字符a |
Findstr(a1,a2) | 在字符串中查找出短的 |
Strrep(s1,s2,s3) | 在s1中找出s2并替换成s3 |
Strmatch(s1,s2) | 在s1中找出与s2一样的字符,返回行号 |
Strcmp(s1,s2) | 比较s1,s2是否相同 |
Strncmp(s1,s2,n) | 比较两个字符串前n个是否相同 |
Strcmpi(s1,s2) | 不区分大小写的比较两个字符串是否相同 |
Lower(s) | 将大写转换成小写 |
Upper(s) | 将小写字符转换成大写 |
4.6结构体
结构体类型数据可以将不同类型的变量存放放在同一个变量名下,可对结构体中不同的数据进行赋值和操作。
结构体的生成方法有两种,命令行直接生成法和函数法。
命令行直接赋值给不同的域时,结构与域之间要用点号连接。
函数法:MATLAB中提供了struct()函数创建结构体
>> ss.str='love';
>> ss.num=[1:2:10];
>> ss
ss =
包含以下字段的 struct:
str: 'love'
num: [1 3 5 7 9]
>> c=struct('str','love','num',[1:2:10])
c =
包含以下字段的 struct:
str: 'love'
num: [1 3 5 7 9]
4.7不同类型的转换
MATLAB中为用户提供了多种数据类型,用户可以根据自己的需求来创建不同类型的变量,但是我们用户在实际使用过程常常要用到不同数据类型之间的转换,所以MATLAB也提供了许多的函数来进行不同类型之间的转换。
4.7.1数字类型之间的转换
数据类型的转换的基本格式:如a1=class(a2),a1为转换后的数据,a2为转换前的数据,class为转换的格式。比如可以转换的数值类型有双精度数据类型、单精度数据类型、16位、32位、64位有无符号整型数据类型。