Matlab里的数据类型

article/2025/9/12 14:46:26

在Matlab里一共有四大类数据类型:
1、数值类型
2、逻辑类型
3、字符和字符串类型
4、结构体类型

这四大类数据类型的存储都是用矩阵来存储的

1、数值类型

数值类型即存储不同种类变量的类型,数值类型有五种:浮点数、整数、复数、Inf、NaN.

浮点数就是小数,(float,没有简写,但属于实数real number,简写real)
整数就是字面意思,(integer,简写int)
复数如:4+3i,
Inf和-Inf 表示正无穷和负无穷
NaN(not a number):表示一个既不是实数也不是复数的值

①浮点型

浮点数: 浮点数即小数,matlab存储小数的类型有两种,分为单精度浮点数(single precision)和双精度浮点数(double precision),matlab缺省值为双精度浮点数。

双精度浮点数即double,占据64bit的存储空间
单精度浮点数为single,占据32bit的存储空间
双精度浮点数能精确更多的小数点
如下:
在这里插入图片描述
在这里插入图片描述

realmin('single') %单精度浮点数的最小值
realmax('single') %单精度浮点数的最大值
realmin('double') %双精度浮点数的最小值
realmax('double') %双精度浮点数的最大值

单精度和双精度浮点数的最小值与最大值分别为:
在这里插入图片描述
double型能取到的值是最大的,取到的变量也是最多的。

②整数型

整数integer: 整数(integer)分为带符号整数和不带符号整数,而它们两种又都包含有8位,16位,32位和64位这四种类型,分别占据8bit,16bit,32bit和64bit。

也就是说整数有:带符号8位整数、带符号16位整数、带符号32位整数、带符号64位整数、不带符号8位整数、不带符号16位整数、不带符号32位整数、不带符号64位整数。

带符号整数的取值范围从负数到正数都有,不带符号整数取值范围取不到负数

带符号整数用一个bit来存储正负号,剩下的bit用来存储数字。不带符号整数的bit全都用来存储数字。

如int8(9)的意思是:值是9,存储形式是int8(带符号8bit的形式)
uint8(9)的意思是:值是9,存储形式是uint8(不带符号8bit的形式)
由于int8用一个bit来存储符号了,所以其能存储的最大值为2^(8-1)-1,(因为中间还有个0所以要减去)。最小值为:-(2 ^(8-1))

也可以换一种理解思路:
int8是有符号八位存储,其存储的个数为2^8个。因为其有正负符号,所以负数的个数是2 ^8/2个,既不是正数也不是负数的0是一个,剩下的2 ^8/2-1个便是正数。所以所以其能存储的最大值为:2 ^8/ 2-1,最小值为:-2 ^8/ 2,共能存储2 ^8个。

uint8是无符号八位存储,其存储的个数为2^8个。因为其无正负符号之分,所以其没有负号。最小值是0,最大值便是2 ^8 -1,共2 ^8个。

剩下的int16、uint16,int32、uint32,int64、uint64等都是同样的道理,其最大和最小值均展示如下:
int8:
int8的取值范围
int16:
int16的取值范围
int32:
int32的取值范围
int64:
int64的取值范围
uint8:
在这里插入图片描述
uint16:
在这里插入图片描述
uint32:
在这里插入图片描述
uint64:
在这里插入图片描述
如果超出存储范围则输出的是存储范围的极限如:int8的存储范围是-128到127.无法存储-129和127.
在这里插入图片描述
四个带符号的整数和四个不带符号的整数(带符号8位整数、带符号16位整数、带符号32位整数、带符号64位整数、不带符号8位整数、不带符号16位整数、不带符号32位整数、不带符号64位整数)。涵盖了matlab整数存储的所有类型。
两种大类和八种详细分类如下:构成了整数的所有类别
在这里插入图片描述
再加上两类浮点型(双精度浮点型和单精度浮点型),即涵盖了matlab中实数的所有类别。如下:
在这里插入图片描述
有无符号整数分类和取值范围及其转换如下:
在这里插入图片描述
浮点数取值范围和转换函数如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

③复数

matlab中*复数的调用函数为complex

x=3;
y=6;
z=complex(x,y)

如下:
在这里插入图片描述
复数也可以直接输入z=3+4i
(3与i之间不能有空格)

在这里插入图片描述
在这里插入图片描述
注:'表示的转制是共轭转置。也就是说实数的共轭转置可以将行向量变成列向量,这是因为在实数里,共轭转置和转置是没有区别的。如:
在这里插入图片描述

但是复数的转置不是这样,共轭转置会使其 行列变换,并且变成共轭:
在这里插入图片描述

那么在复数里的转置为.’
在这里插入图片描述

2、逻辑类型
Matlab中存储逻辑变量的类型有两种,为true和false,分别由1和0来表示。

函数logical()可以将任何非零的数值转化为true,将数值0转化为false

a=3;b=0;
c=logical(a)
d=logical(b)

在这里插入图片描述

也就是说只有数值为0时的逻辑值是false,为0
只要数值不为0时的逻辑值就是true,为1
如:
3<=5为true
在这里插入图片描述
3=3为true
在这里插入图片描述
3不等于3为false
在这里插入图片描述

符号运算符和逻辑运算符

常见符号运算符:

 a+b       %加a-b       %减a*b       %乘a\b或a/b  %-         %负a^b       %abs()     %绝对值=         %等于,表示赋值(将一个值赋给一个变量)e、E、D   %表示1*10^的几次方exp       %表示以e为底的指数函数

常见逻辑运算符:

==     %逻辑等于,变量值相同将会返回1,如果不同将返回0.
<      %小于   
>      %大于   
>=     %大于等于  
<=     %小于等于  
~=     %不等于
&&     %||     %~      %非     
xor    %异或  相异为1,否则出0  
xnor   %同或  相同为1,否则为0
nand   %与非  全10,否则为1     (先按与操作,然后结果取反)
nor    %或非  全01,否则为0      (先按或操作,然后结果取反)

注:a/b表示a ÷ b ,a\b 表示b÷ a
=是用来赋值的 如:a=b指的是把b的值赋给a
是用来对比的 如:a==b指的是判断a和b的值是否相等

在这里插入图片描述
在这里插入图片描述

短路运算

特别的,在执行或运算时,只需要有一个满足条件,后面的就不会再继续执行,其逻辑值就为1.
比如:在未定义a的情况下,执行逻辑上1=1或a小于3时,以下为两种情况:
1、 1==1 || a<3

由于 1= =1是成立的,因而或指令就不再执行后面的a<3,所以输出逻辑值为1
在这里插入图片描述
2、a<3 || 1==1
在这里插入图片描述
按照顺序依次执行,首先执行a<3,由于a未定义,所以输出结果便如上。

运算符的优先级

无论是符号运算符还是逻辑运算符都是有优先级的
优先级如下表:
在这里插入图片描述
此外逻辑运算输出的值只有两个,一个是1,一个是0。这就一些手写的数学运算无法正常使用。比如要表示:10>5>2时:
在这里插入图片描述
显示的是逻辑0,也就是false。这个式子为啥是false呢,原因就是逻辑运算输出的值只有两个,一个是1,一个是0。按照顺序首先执行10>5,为true,因而输出值为1,之后再执行第二段的逻辑运算便是1>2了。所以输出值变成了false为0.

因而要想表达10>5>2,应该为10>5 && 5>2
如下:
在这里插入图片描述

舍入误差

浮点数的运算经常设计到舍入误差如:
对于1*10几次方的运算有四种运算形式: E或e或D或^
如:

1E-10+1E0-1E0==1E-10
1e-10+1e0-1e0==1e-10
1D-10+1D0-1D0==1D-10
1*10^-10+1*10^0-1*10^0==1*10^-10

1E-10就是110^(-10)
e、E、D都代表1
10的几次方
同时运算该对比逻辑后,会发现其逻辑值为false为0.这是由于发生了舍入误差。如下:其逻辑为0
在这里插入图片描述
将他们分开来一步步计算的话便可以发现端倪,其中有微小的误差:
在这里插入图片描述
这些误差导致了其对比逻辑为0.因而一般不会用“==”来对比两个浮点数的大小。
经常用的是差的绝对值,再设一个阈值:
在这里插入图片描述

3、字符和字符串
matlab中存储字符变量的类型有两种,为字符和字符串
在Matlab中,数据类型char character)表示一个字符。一个char类型的1×n数组称为字符串str (string).
字符用单引号括出来,而字符串用双引号括出来

a=I Love Matlab
b='I Love Matlab'
c="I Love Matlab"

字符串没有单引号括出来
在这里插入图片描述
在这里插入图片描述
所有的字符型变量都对应着一个专门的代码,其转换方法如下:

double('a')     %将字符a转换为双精度浮点型代码
single('a')     %将字符a转换为单精度浮点型代码
int8('a')       %将字符a转换为8位有符号整数型代码
uint32('a')     %将字符a转换为32位无符号整数型代码
double('小狗勾') %将字符'小狗勾'转化为双精度
char(97)         %将实数97转化为字符型代码
char(543.4)      %将实数543.4转化为字符型代码
char([23567 29399 21246]) %将向量[23567 29399 21246]转化为字符型(char)代码
...
...
...

对于double(‘a’) 、single(‘a’) 、int8(‘a’) 、uint32(‘a’) 等等
不管是怎么样转换,其值都是一样的,字符‘a’所代表的代码就是97
在这里插入图片描述
字符a的代码为97 c为99
在这里插入图片描述
在这里插入图片描述

同样的这些代码也可转化为字符,如:
在这里插入图片描述
在这里插入图片描述
双精度实数与字符型的相互转化:
在这里插入图片描述
如果超出取值范围的话只能取到最大值或最小值。如下,将字符 ‘小狗勾’ 转化为实数为[23567 29399 21246].但这些数均超出了8bit整数型即int8的最大值127,因而其只能输出为最大值127.
在这里插入图片描述

ASCII为字符编码表,共有128个字符合集:

char(1:128)%查看ASCII中128个字符合集

其结果如下:(无法显示的是一些功能性符号)

'	!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€'

4、结构体类型
结构体类型其实就是混合型,它其中的组成部分可以是以上我们所讲的任意数据类型

关于matlab中结构体类型的讲解和构造方法以及代码可见MATLAB 数据类型中的结构体类型,及其构造方法


http://chatgpt.dhexx.cn/article/hSwR619w.shtml

相关文章

MATLAB数据类型——整数

整数 MATLAB 支持以 1 字节、2 字节、4 字节和 8 字节几种形式存储整数数据。有意识地去使用可容纳您的数据的最小整数类型来存储数据&#xff0c;可以达到节省内存和程序执行时间的目的。 MATLAB具有四个有符号整数类和四个无符号整数类。 有符号类型能够处理负整数以及正整数…

MATLAB数据类型——浮点数

浮点数 MATLAB 以双精度或单精度来表示浮点数&#xff0c;默认数值类型为双精度 双精度浮点&#xff08;double&#xff09;&#xff1a;以 double 形式存储的任何值都需要 64 位 单精度浮点&#xff08;single&#xff09;&#xff1a;以 single 形式存储的任何值都需要 32 位…

MATLAB 数据类型中的结构体类型,及其构造方法

Matlab中的数据类型一共有四大类分别为&#xff1a; 1、数值类型 2、逻辑类型 3、字符和字符串类型 4、结构体类型 关于数据类型&#xff0c;尤其是前三种类型具体可见Matlab里的数据类型已经对其进行了详细的介绍。 而结构体类型中的每个属性&#xff0c;都可以是以上四大类中…

matlab数据类型 —— 整型

matlab系列文章&#xff1a;&#x1f449; 目录 &#x1f448; 文章目录 〇、概述一、有符号整型二、无符号整型三、整型创建例1. 将数据转换成整型 四、整数参与的运算1. 运算中的注意事项例2. 整型参与的数值运算 〇、概述 整型&#xff1a;是指没有小数点及以后数据部分的…

matlab如何改变数据类型,matlab数据类型转换实用案例

之前群友在群里发了一张有关数据类型转换的图片 数据类型转换对于经常使用Matlab的人来说真的是很基础且实用的知识点&#xff0c;but! 相互之间转换关系很复杂不容易记&#xff0c;每次使用的时候都要百度&#xff0c;为了方便大家记住数据类型转换关系&#xff0c;转换图便应…

Matlab 数据类型

数值类型--整数类型 Matlab中的整数类型&#xff0c;不同的整数类型占据的位数不同&#xff0c;实际应用中&#xff0c;应根据实际需求合理选择合适的整数类型。 Matlab中数值默认是以双精度浮点类型存储&#xff0c;在不超出数值范围的情况下&#xff0c;任意两个整数之间可以…

MATLAB数据类型及转换

MATLAB数据类型及转换 MATLAB的主要数据类型有&#xff1a;整型&#xff0c;浮点型&#xff0c;逻辑&#xff0c;字符&#xff0c;日期和时间&#xff0c;结构数组&#xff0c;细胞数组及函数句柄等&#xff0c;其中函数句柄是MATLAB所特有的一种数据类型。 一&#xff1a;整…

MATLAB-数据类型

默认情况下&#xff0c;MATLAB 存储所有数值变量为双精度浮点值。其他数据类型存储文本&#xff0c;整数或单精度值或单个变量中相关数据的组合。 MATLAB不需要任何类型声明或维度语句。当MATLAB遇到新的变量名称时&#xff0c;它将创建变量并分配适当的内存空间。 如果变量已…

MC20E资料

MC20E资料 U创论坛下载-Quectel_射频LAYOUT_应用指导_V2.2.pdf 文件到原文下载&#xff0c;原文出自&#xff1a;https://bbs.usoftchina.com/thread-202777-1-1.html

移远BC26/BC28(略)/MC20开发之环境搭建 一

1.对于常见的移远OPENCPU开发来说&#xff0c;第一步安装GCC编译器 2.第二步&#xff0c;安装一个集成编译环境&#xff0c;常见的是keil编译环境 3.环境的配置(仅 BC28) 4.最后检查环境是否搭建好 BC28,命令如下&#xff1a; MC20/BC26&#xff0c;命令如下 make clean:清除 m…

3.1 使用STC89C52控制MC20拨打电话

需要准备的硬件 MC20开发板 1个https://item.taobao.com/item.htm?id562661881042GSM/GPRS天线 1根https://item.taobao.com/item.htm?id531979567261IPEX接口转SMA接口转接线 1根https://item.taobao.com/item.htm?id531979903836GPS有源天线 1根https://item.taobao.com/i…

1.6 使用电脑测试MC20的读取带中文短信功能

需要准备的硬件 MC20开发板 1个https://item.taobao.com/item.htm?id562661881042GSM/GPRS天线 1根https://item.taobao.com/item.htm?id531979567261IPEX接口转SMA接口转接线 1根https://item.taobao.com/item.htm?id531979903836GPS有源天线 1根https://item.taobao.com/i…

1.4 使用电脑测试MC20的接收英文短信功能

需要准备的硬件 MC20开发板 1个https://item.taobao.com/item.htm?id562661881042GSM/GPRS天线 1根https://item.taobao.com/item.htm?id531979567261IPEX接口转SMA接口转接线 1根https://item.taobao.com/item.htm?id531979903836GPS有源天线 1根https://item.taobao.com/i…

4.2 使用STM32控制MC20发送短信

需要准备的硬件 MC20开发板 1个https://item.taobao.com/item.htm?id562661881042GSM/GPRS天线 1根https://item.taobao.com/item.htm?id531979567261IPEX接口转SMA接口转接线 1根https://item.taobao.com/item.htm?id531979903836GPS有源天线 1根https://item.taobao.com/i…

4.5 基于STM32+MC20远程短信控制开关

需要准备的硬件 MC20开发板 1个https://item.taobao.com/item.htm?id562661881042GSM/GPRS天线 1根https://item.taobao.com/item.htm?id531979567261IPEX接口转SMA接口转接线 1根https://item.taobao.com/item.htm?id531979903836GPS有源天线 1根https://item.taobao.com/i…

1.8 使用电脑测试MC20的GPRS功能

需要准备的硬件 MC20开发板 1个https://item.taobao.com/item.htm?id562661881042GSM/GPRS天线 1根https://item.taobao.com/item.htm?id531979567261IPEX接口转SMA接口转接线 1根https://item.taobao.com/item.htm?id531979903836GPS有源天线 1根https://item.taobao.com/i…

2.3 使用ARDUINO控制MC20进行GPRS的TCP通讯

需要准备的硬件 MC20开发板 1个https://item.taobao.com/item.htm?id562661881042GSM/GPRS天线 1根https://item.taobao.com/item.htm?id531979567261IPEX接口转SMA接口转接线 1根https://item.taobao.com/item.htm?id531979903836GPS有源天线 1根https://item.taobao.com/i…

1.2 使用电脑测试MC20模块的GPS功能测试

需要准备的硬件 MC20开发板 1个https://item.taobao.com/item.htm?id562661881042GSM/GPRS天线 1根https://item.taobao.com/item.htm?id531979567261IPEX接口转SMA接口转接线 1根https://item.taobao.com/item.htm?id531979903836GPS有源天线 1根https://item.taobao.com/i…

基于STM32的MC20模块GPRS+GPS的C语言驱动程序

MC20 模块是一款集成了高性能GNSS 引擎和四频段GSM/GPRS 引擎的多功能无线模块,本次在项目中使用MC20作为通信网关,开发其与服务器通信的功能以及定位功能,稍微学习了一下。 1.硬件部分 GSM/GPRS 部分主要特性: MC20模块本身集成度较高,如果仅仅是使用的话其实非常简单…