在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都代表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 数据类型中的结构体类型,及其构造方法

Matlab里的数据类型相关推荐

  1. python numpy 数据类型为python对象-python numPy模块 与numpy里的数据类型、数据类型对象dtype...

    学习链接:http://www.runoob.com/numpy/numpy-tutorial.html 简介: numPy是python语言的一个扩展库,是一个运行非常快的数学库,主要用于数组计算. ...

  2. python numpy数据类型_python numPy模块 与numpy里的数据类型、数据类型对象dtype

    学习链接:http://www.runoob.com/numpy/numpy-tutorial.html 简介: numPy是python语言的一个扩展库,是一个运行非常快的数学库,主要用于数组计算. ...

  3. 用matlab自己搭建bp神经网络,怎样在matlab里建立一个BP神经网络模型?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用以下的数据怎样在matlab里建立一个BP神经网络模型?求高手帮忙!!最好是有详细步骤以及代码 年份 WTI(美元/桶) 2007-1 54.26 20 ...

  4. Matlab编程与数据类型 -- 数据类型概述

    本微信图文详细介绍了Matlab中的数据类型,数值型和逻辑型举例介绍,其它类型在相应图文进行介绍.

  5. Matlab编程与数据类型 -- 单元数组

    Matlab编程与数据类型 – 单元数组

  6. semilogx 多条曲线_怎么让两个指数在一个坐标,matlab里怎样一个坐标上显示多个曲线,而且横轴要用指数形式的?谢谢...

    Q1:matlab里怎样一个坐标上显示多个曲线,而且横轴要用指数形式的?谢谢 多个纵轴数组分别是y1,y2,y3,横轴数组为x 命令为: semilogx(x,y1,x,y2,x,y3) 完了 Q2: ...

  7. matlab如何创建table,table,matlab,中table数据类型,创建,调用,访问

    MATLAB table数据结构 目录: ?关于作者 ?table简介 o为什么需要table数据结构 o通过导入数据构造table对象 o调用table构造函数来构造table对象 o通过转换函数构 ...

  8. 用matlab跑神经网络模型,怎样在matlab里建立一个BP神经网络模型?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用以下的数据怎样在matlab里建立一个BP神经网络模型?求高手帮忙!!最好是有详细步骤以及代码 年份 WTI(美元/桶) 2007-1 54.26 20 ...

  9. 怎样用matlab模型建立,怎样在matlab里建立一个BP神经网络模型?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用以下的数据怎样在matlab里建立一个BP神经网络模型?求高手帮忙!!最好是有详细步骤以及代码 年份 WTI(美元/桶) 2007-1 54.26 20 ...

  10. Matlab里evalin和assignin的用法

    原文地址:Matlab里evalin和assignin的用法作者:了凡春秋 assignin与evalin     MATLAB通常的基本工作空间是'base'空间.MATLAB在程序运行过程中,将为 ...

最新文章

  1. 关于win7_iis报500.19和500.21错误的解决方法
  2. ITK:重采样DICOM系列
  3. 折半查找法(二分查找法)
  4. 使用IDEA Maven搭建Mybatis环境
  5. npm安装iViewUI框架 - cmd篇
  6. Ansible Tower - 使用入门 2 - 不同团队用户基于 RBAC 执行模板
  7. sscanf和sprintf的高级用法
  8. 存储技术复杂性的代价
  9. MSU 出品的 H.264 编码器比较 (2012.5)
  10. C++学习笔记: 混合语言编程
  11. Splash特征描述子
  12. JAVA开发常用类(六)
  13. 判断json对象的属性的值是json对象还是json数组
  14. 按下键时蜂鸣器发出声音c语言,学习日记——蜂鸣器开关实例
  15. MFC程序设计 笔记1---综述
  16. java中如何实例化一个接口_「实例化」java之接口实例化 - seo实验室
  17. 浙江移动彩信新sp接入指南
  18. openwrt安装GPS设备,使用GPSD获取GPS信息
  19. python条形图参数_更改水平条形图大小matplotlib
  20. android手机设置查看电池耗电,安卓查看电池损耗代码【搞定指南】

热门文章

  1. 【Ydui.js】------- JavaScript 判断手机终端 例如:移动终端,苹果终端,ipad 终端 等;
  2. 耦合矩阵 matlab,耦合矩阵变换(化简)的问题
  3. 计算机专业有没有3D打印,3D打印技术属于哪个专业_招生问答
  4. Hessian Matrix(海森矩阵)
  5. dp hp oracle 备份软件_HP DP备份软件设置
  6. 让读书的人面上有光:亚马逊Kindle青春版上市
  7. hpsocket java代码_java版本调用HP-Socket服务端代码
  8. java怎么打印反三角形_Java基础练习——打印正反三角形
  9. Python应用开发——爬取网页图片
  10. 微信小程序 测试号 申请