<MATLAB新手入门>MATLAB数据类型(一)

系列文章目录

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软件进行数值计算等任务的基本要求。

  • 53
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值