matlab将一个数组中的元素转换为整型_MATLAB数据类型及相互转换(一)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-31 17:52   11   0

9349855b43a70fa90136810ca9e70e95.png

MATLAB 中的数据类型与其它语言类似,下文将对MATLAB中的数据类型做一总结

注意:在matlab中有whos()函数和class()函数等可以查看变量数据类型,使用格式如下代码

>> 

MATLAB中的变量都默认为一个矩阵,矩阵中元素数据类型有下列几类:

9ee35cb196cf19b8a57bdd76c5301c9e.png

一、数值型

1、整型

(1) int:带符号整型

(2) uint:无符号整型

>> 

2、浮点型

(1)single:单精度

(2)double:双精度

double()函数可以将字符转化为相应的ASCII码组成的向量

s 

(3 )复型

real(z):计算复数的实部

imag(z):计算复数的虚部

abs(z):计算复数的模

angle(z): 以弧度为单位给出复数的幅角

>> 

二、逻辑型(布尔型)

ind 

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中有许多的函数可以用来处理时间和日期,

8ff8f5671fe3baf738290927831f4301.png
>> 

日期与时间格式转换:

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
03c0e0b0c39ae5f1849d95550985614c.png

20f795e7d86fcdb3a6cd6482f1450ada.png

七、函数句柄

在MATLAB中可以通过调用函数句柄来简介调用函数,相当于给函数一个名字,然后通过该名字来调用该函数。

函数句柄的基本结构是:function_handle

例如,f = @sin,我们可以通过f来调用sin()函数。

>> 

常用的几个与句柄相关的函数:

a204c4b97efd3f03d70f6f758f2b8b5f.png
>> 

上述代码中cellfun()函数的用法可以参考下面链接

Matlab cellfun函数blog.csdn.net

上述为matlab中常见的数据类型,在不同的时候需要使用不同的数据类型。对于cell数组于struct数组的差异,使用及相互转化参考如下链接:

灵魂歌手水云天:MATLAB数据类型及相互转换(二)zhuanlan.zhihu.com
d148073c056169a86d5105904fc84b97.png

本文参考文献:

清华大学出版社《MATLAB基础于可视化编程》

由于水平有限,时间仓促,不足之处请批评指正。

更多MATLAB学习资源请入QQ群:953314432。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP