Matlab里的数据类型
在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:
int16:
int32:
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 %与非 全1出0,否则为1 (先按与操作,然后结果取反)
nor %或非 全0出1,否则为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都代表110的几次方
同时运算该对比逻辑后,会发现其逻辑值为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 数据类型中的结构体类型,及其构造方法
Matlab里的数据类型相关推荐
- python numpy 数据类型为python对象-python numPy模块 与numpy里的数据类型、数据类型对象dtype...
学习链接:http://www.runoob.com/numpy/numpy-tutorial.html 简介: numPy是python语言的一个扩展库,是一个运行非常快的数学库,主要用于数组计算. ...
- python numpy数据类型_python numPy模块 与numpy里的数据类型、数据类型对象dtype
学习链接:http://www.runoob.com/numpy/numpy-tutorial.html 简介: numPy是python语言的一个扩展库,是一个运行非常快的数学库,主要用于数组计算. ...
- 用matlab自己搭建bp神经网络,怎样在matlab里建立一个BP神经网络模型?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用以下的数据怎样在matlab里建立一个BP神经网络模型?求高手帮忙!!最好是有详细步骤以及代码 年份 WTI(美元/桶) 2007-1 54.26 20 ...
- Matlab编程与数据类型 -- 数据类型概述
本微信图文详细介绍了Matlab中的数据类型,数值型和逻辑型举例介绍,其它类型在相应图文进行介绍.
- Matlab编程与数据类型 -- 单元数组
Matlab编程与数据类型 – 单元数组
- semilogx 多条曲线_怎么让两个指数在一个坐标,matlab里怎样一个坐标上显示多个曲线,而且横轴要用指数形式的?谢谢...
Q1:matlab里怎样一个坐标上显示多个曲线,而且横轴要用指数形式的?谢谢 多个纵轴数组分别是y1,y2,y3,横轴数组为x 命令为: semilogx(x,y1,x,y2,x,y3) 完了 Q2: ...
- matlab如何创建table,table,matlab,中table数据类型,创建,调用,访问
MATLAB table数据结构 目录: ?关于作者 ?table简介 o为什么需要table数据结构 o通过导入数据构造table对象 o调用table构造函数来构造table对象 o通过转换函数构 ...
- 用matlab跑神经网络模型,怎样在matlab里建立一个BP神经网络模型?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用以下的数据怎样在matlab里建立一个BP神经网络模型?求高手帮忙!!最好是有详细步骤以及代码 年份 WTI(美元/桶) 2007-1 54.26 20 ...
- 怎样用matlab模型建立,怎样在matlab里建立一个BP神经网络模型?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用以下的数据怎样在matlab里建立一个BP神经网络模型?求高手帮忙!!最好是有详细步骤以及代码 年份 WTI(美元/桶) 2007-1 54.26 20 ...
- Matlab里evalin和assignin的用法
原文地址:Matlab里evalin和assignin的用法作者:了凡春秋 assignin与evalin MATLAB通常的基本工作空间是'base'空间.MATLAB在程序运行过程中,将为 ...
最新文章
- 关于win7_iis报500.19和500.21错误的解决方法
- ITK:重采样DICOM系列
- 折半查找法(二分查找法)
- 使用IDEA Maven搭建Mybatis环境
- npm安装iViewUI框架 - cmd篇
- Ansible Tower - 使用入门 2 - 不同团队用户基于 RBAC 执行模板
- sscanf和sprintf的高级用法
- 存储技术复杂性的代价
- MSU 出品的 H.264 编码器比较 (2012.5)
- C++学习笔记: 混合语言编程
- Splash特征描述子
- JAVA开发常用类(六)
- 判断json对象的属性的值是json对象还是json数组
- 按下键时蜂鸣器发出声音c语言,学习日记——蜂鸣器开关实例
- MFC程序设计 笔记1---综述
- java中如何实例化一个接口_「实例化」java之接口实例化 - seo实验室
- 浙江移动彩信新sp接入指南
- openwrt安装GPS设备,使用GPSD获取GPS信息
- python条形图参数_更改水平条形图大小matplotlib
- android手机设置查看电池耗电,安卓查看电池损耗代码【搞定指南】
热门文章
- 【Ydui.js】------- JavaScript 判断手机终端 例如:移动终端,苹果终端,ipad 终端 等;
- 耦合矩阵 matlab,耦合矩阵变换(化简)的问题
- 计算机专业有没有3D打印,3D打印技术属于哪个专业_招生问答
- Hessian Matrix(海森矩阵)
- dp hp oracle 备份软件_HP DP备份软件设置
- 让读书的人面上有光:亚马逊Kindle青春版上市
- hpsocket java代码_java版本调用HP-Socket服务端代码
- java怎么打印反三角形_Java基础练习——打印正反三角形
- Python应用开发——爬取网页图片
- 微信小程序 测试号 申请