系列文章目录
MATLAB基本功能介绍 链接: link
MATLAB矩阵操作(一) 链接: link
MATLAB矩阵操作(二) 链接: link
文章目录
前言
MATLAB提供多种数据类型,以供用户在不同情况下使用。主要包括以下数据类型:
- 数值型
- 字符和字符串
- 逻辑型
- 结构(structure)数组
- 元胞(cell)数组
- 分类(categorical)数组
- 表格
- 日期和时间
- Map容器
本文主要介绍数值型、字符和字符串、逻辑型、结构数组和元胞数组这几种常用类型。
在前面几篇已经初步介绍了MATLAB使用的基本方法和矩阵操作相关知识,本章及以后内容在介绍相关知识的同时将更多补充示例,示例中旁征博引各类函数引用或程序编写方法,以帮助读者更好理解及使用MATLAB。
一、数值型
MATLAB中的数值型包括有符号和无符号整数、单精度和双精度浮点数。
MATLAB存储数据时默认使用双精度浮点数,该默认类型不可修改,但是可以选择用非默认的整数或单精度浮点数来存储矩阵或数组,以节省内容空间。
所有的数值型数组都支持基本的数组操作。
有符号整数和无符号整数分别有4种类型,共8种。其中,有符号整数有int8/int16/int32/int64四种,分别占用1/2/4/8个字节;无符号整数有uint8/uint16/uint32/uint64四种,分别占用1/2/4/8个字节。
数值型数组或矩阵较为简单,不再详述。
二、字符与字符串
在MATLAB中,几个字符可以构成一个字符串(string)。可以把字符串视为一个行向量,其中的每一个字符(含空格符)以ASCII的形式存放在每一个元素中。字符串在数据的可视化、应用程序/软件的用户交互方面有着十分重要的作用。
1 字符串基本操作
(1)字符串创建
一般通过两个单引号括起来建立字符串(一般使用单引号),字符串的内容既可以是英文,也可以是中文。
注:MATLAB创建字符串的单引号必须是英文状态,此外,如逗号、冒号、括号、程序末端的分号等也必须是英文。
>> a='matlab'
a =
'matlab'
>> b='字符串创建示例'
b =
'字符串创建示例'
(2)字符串寻访
MATLAB按从左到右的顺序对字符串中的字符进行编号,通过该编号可进行字符串寻访,方法与一般矩阵一样。
>> a(4:6)
ans =
'lab'
>> b(1:3)
ans =
'字符串'
(3)字符串信息查询
>> whos a
Name Size Bytes Class Attributes
a 1x6 12 char
(4)字符串数组创建
一般使用str2mat函数创建字符串数组,其中的“2”表示“to” ,即将字符串格式转换为mat格式。
>> c=str2mat('字符','串','数组','创建')
c =
4×2 char 数组
'字符'
'串 '
'数组'
'创建'
2 字符串比较
MATLAB中有多重字符串比较函数:
strcmp:判断两个字符串是否相等
strncmp:判断两个字符串的前n个字符是否相等
strcmpi:判断两个字符串是否相等(与strcmp作用相同,但不区分英文字母大小写)
strcnmpi:判断两个字符串的前n个字符是否相等(与strcmp作用相同,但不区分英文字母大小写)
% 假设有如下三个字符串
>> a='string';
>> A='String';
>> b='strong';
>> strcmp(a,A) % 比较a与A是否一致,区分大小写
ans =
logical
0
% 函数返回值为逻辑值,0表示两者不一致,1表示一致,如下。
>> strcmpi(a,A)
ans =
logical
1
>> strncmp(a,b,3) % 比较a与b的前3个字符是否一致。
ans =
logical
1
% 也可以用关系运算符比较字符串,此时需要两字符串长度一致
>> a==b
ans =
1×6 logical 数组
1 1 1 0 1 1
3 字符串查找与替换
strrep:字符串查找和替换,将字符串中某一子串a替换为指定字符串b(如果存在a的话)
findstr:字符串查找,返回字符串中某一子串的开始位置
strmatch:查找一个字符数组中以指定子串开始的字符串,返回找到的字符串行编号
>> a='明天下午2点去篮球场';
>> b=strrep(a,'2','3') % 注意此处2/3的类型均为字符,而非数值型,与下面的'篮球场'并无本质区别
b =
'明天下午3点去篮球场'
>> c=strrep(a,'篮球场','足球场')
c =
'明天下午2点去足球场'
>> findstr('篮球',a) % 如果字符串中存在多个指定子串,则返回值也有多个
ans =
8
>> A='basketball';
>> B='basket';
>> C='football';
>> D=str2mat(A,B,C) % 将A、B、C组合为字符串数组
D =
3×10 char 数组
'basketball'
'basket '
'football '
>> strmatch('basket',D) % 查找D中以'basket'开头的字符串
ans =
1
2
4 类型转换
MATLAB中允许不同类型的数据间进行转换,并内置有相应的函数。这里仅介绍常用的字符串与其他类型数据的转换,其他类型的转换会在讲解到相应内容时介绍。
num2str:将数字转换为字符串
str2num:将字符串转换为数字
>> a='123'; % 字符串
>> b=123; % 数值
>> isequal(a,b) % 判断两者是否一致
ans =
logical
0
% 由于两者类型不同,因此返回逻辑0,即不一致
>> ab=str2num(a) % 将字符串a转换为数值
ab =
123
>> isequal(ab,b) % 此时两者皆为数值型,一致
ans =
logical
1
% 同理,将b由数值转换为字符串
>> ba=num2str(b)
ba =
'123'
>> isequal(a,ba)
ans =
logical
1
5 字符串连接
strcat:这是MATLAB内置的连接字符串的函数,灵活使用该函数在MATLAB程序编写具有很大帮助
>> time=3;
>> str=strcat('明天下午',num2str(time),'点去篮球场')
str =
'明天下午3点去篮球场'
总结
本文介绍了MATLAB数据类型中的数值型和字符串类型,理解并掌握这些内容是使用MATLAB软件进行数值计算等任务的基本要求。