MATLAB 中的数据类型与其它语言类似,下文将对MATLAB中的数据类型做一总结
注意:在matlab中有whos()函数和class()函数等可以查看变量数据类型,使用格式如下代码
MATLAB中的变量都默认为一个矩阵,矩阵中元素数据类型有下列几类:
一、数值型
1、整型
(1) int:带符号整型
(2) uint:无符号整型
2、浮点型
(1)single:单精度
(2)double:双精度
double()函数可以将字符转化为相应的ASCII码组成的向量
(3 )复型
real(z):计算复数的实部
imag(z):计算复数的虚部
abs(z):计算复数的模
angle(z): 以弧度为单位给出复数的幅角
二、逻辑型(布尔型)
logical()函数可以将数值型转化为逻辑型
任何非零的转化为真1,零为假0
三、字符型
MATLAB中的字符在存储空间中与相应的ASCII码对应,字符串可以理解为字符的数组。
四、struct数组(结构体数据)
结构体数组的基本部分(Element)是结构(structure)。数组中的每个结构都是平等的,他们以下标区分。
1、结构数组的创建
(1)直接赋值法
(2)函数法
在matlab中使用struct()函数来创建结构体数组。
调用格式:
s = struct('field1','values','field2','values',……)
s = struct('field1',{},'field',{},……)
s = struct([ ]):建立一个没有字段的空结构。
s = struct(obj):将对象obj转换为它的等价结构。
field为字段名,value表示对应于field的字段值。field必须是和value同样大的元胞数组或标量。value相当于所有field的一个名字集合,一个struct中有不同的域,每一个域有一个名字value1,value2 ……,这些value的总和为value,一个value对应一个field,所有field的总和为field
2、结构数组的操作
(1)对结构数组的访问和显示
a、同数组的访问,如s(:,1);
b、s.field1可以访问field对应的所有value
c、s(1).field1 可以访问第一列在field1对应的值
具体见下面代码实例
(2)删除结构体
删除结构体一般使用rnfield()函数
调用格式:
s = rmfield(s,field): 用于删除成员变量field,当field为字符型变量或单元型变量时,可以一次删除多个指定的成员变量。
五、cell数组(单元数组)
cell数组是由可以包括任何数据类型的单元组成的数组。,使用"{}"创建。使用“;”分行。
通过cell数组可以在同一个变量中存储不同数据类型的数据,给代码的编写带来的很大的便利
1、cell数组的创建:
(1) 直接赋值法:
此方法较为容易,需要注意的是
a、无论用"()"还是用"{}"都可以表示单元的下标,而且都可以用来输入元素,但是前后需要不同。
b、使用"{}"表示单元下标的时候后面可以不用括号,使用"()"的时候不行。
(2) 函数法:
使用cell()函数生成单元数组,相当于先利用函数对单元内存空间分配成给定的区域,然后对单元中的元素进行赋值。
调用格式:
c = cell(n): 建立一个n
![]()
n的空矩阵元胞数组。此处n必须为标量,否则产生错误
c = cell(m,n) 或c = cell([m,n]): 建立一个m
![]()
n的空矩阵元胞数组c,其中m,n为标量。
c = cell(m,n,p,……)或c = ([m,n,p,……]): 建立一个m
![]()
n
![]()
p
![]()
……的空矩阵元胞数组
c = cell(size(A)): 建立一个元胞数组c,其大小同数组A.
c = cell(javaobj): 将java数组或者java对象javaobj转换为matlab中的cell数组。
2、单元数组的访问和显示:(1) 使用"{}"访问
使用{}可以访问到cell数组内元素具体的内容,并且可对其中的数据执行具体的操作
(2)使用"()"访问
使用()可以访问单元数组是访问单元数组中的整体,不可以访问cell数组中的具体元素。
3、cell数组的删除
对于cell数组的删除可以通过把需要删除的单元赋值为空来实现。通过"{}"和"()"来访问元素并将其赋值置空,即可删除需要删除的内容。
在cell数组删除的时候与上面相同可以使用"{}"和"()"两种来实现删除,用法与cell数组的访问相同。
六、时间和日期型
MARLAB中有许多的函数可以用来处理时间和日期,
日期与时间格式转换:
a、datestr()函数: 该函数可以将日期数字和日期向量转化为日期字符串,
b、datenum()函数
该函数用于将日期字符串和日期向量转化为日期数字。此处的日期数字是一串数字,其计算是将每个时间点表示为从 0000 年 1 月 0 日起的天数。咋们可以通过计算来验证次结果。
下面代码设定要计算的时间为2018-8-3 00-00-00,通过函数计算后返回737275
通过计算器计算得:
![]()
.该处计算结果是理想化的计算结果,即忽略了总从0000年至2018年以来的闰年闰月等情况,全部当作365天计算,忽略的2018年前八个月的天数差异,全部当作30天计算。得出结果与函数计算结果相近,所以原结果可靠。
c、datevec()函数
该函数可以将日期数字和日期字符串转化为日期向量。
MATLAB--时间,日期及显示格式 - 箬笠蓑衣 - 博客园www.cnblogs.com
七、函数句柄
在MATLAB中可以通过调用函数句柄来简介调用函数,相当于给函数一个名字,然后通过该名字来调用该函数。
函数句柄的基本结构是:function_handle
例如,f = @sin,我们可以通过f来调用sin()函数。
常用的几个与句柄相关的函数:
上述代码中cellfun()函数的用法可以参考下面链接
Matlab cellfun函数blog.csdn.net
上述为matlab中常见的数据类型,在不同的时候需要使用不同的数据类型。对于cell数组于struct数组的差异,使用及相互转化参考如下链接:
灵魂歌手水云天:MATLAB数据类型及相互转换(二)zhuanlan.zhihu.com
本文参考文献:
清华大学出版社《MATLAB基础于可视化编程》
由于水平有限,时间仓促,不足之处请批评指正。
更多MATLAB学习资源请入QQ群:953314432。