当前位置: 首页 > news >正文

matlab 常用数据类型的转换

目录

  • 一、数据类型
    • 1、整型
    • 2、浮点型
    • 3、逻辑型
    • 4、元胞数组
    • 5、结构体
  • 二、数据类型转换
  • 三、图像数据类型转换
  • 四、参考链接

一、数据类型

1、整型

  intunit都是整型,只是前一个有符号,后一个没有符号,比如在16位系统中,int范围是-32768-32767unit范围是0-65535

2、浮点型

  singledouble都是浮点型(单精度、双精度),只是single最多可以显示小数点后7位,double最多可以显示小数点后14位;single变量存储大小位32位(4个字节),double变量存储大小为64位(8个字节)。

3、逻辑型

  logical是逻辑数据类型,有0和1两种。

4、元胞数组

  cell array元胞数组类型,数组元素可以是不同的数据类型。

5、结构体

  structure为结构体类型,与C语言的结构体类似,例创建一个station结构体,有两种方式,一是通过‘结构体名称.字段名称’进行创建和赋值,ctation.name=‘s’;station.x=100;station.y=120;二是通过struct创建结构体,station=struct('name',{s},'x',{100},'y',{120})

  char为字符串类型;例如‘Hello,world!’

二、数据类型转换

浮点数128.4转换为整数:

a = int8(128.4)=127

高位溢出,因为128.4超出了int8的范围(-128~127),需要用:

a = int16(128.4)=128
a = round(128.4)=128

round()函数为取整函数,小数部分小于0.5则舍去,即四舍五入。

a = fix(128.4)=128
a = fix(-128.6)=-128

fix()函数为向0取整函数。

三、图像数据类型转换

1、uint8转化为double用来方便图像的运算:double函数只是将读入图像的uint8数据转换为double类型,一般不使用。常用的是im2double函数,将uint8图像转为double类型,范围为0-1,如果是255的图像,那么255转为1,0还是0,中间的做相应改变。

matlab中读入图像的数据类型是uint8,而在矩阵中使用的数据类型是double。

  • I2=im2double(I1) :把图像数组I1转换成double精度类型;如果不转换,在对uint8进行加减时会产生溢出。默认情况下,matlab将图像中的数据存储为double型,即64位浮点数。

  • im2double():将图象数组转换成double精度类型。

  • im2single(): 将图像转化为single类型。

  • im2uint8():将图象数组转换成unit8类型。

  • im2uint16():将图象数组转换成unit16类型。

2、uint8im2uint8的区别

  在数据类型转换时候uint8im2uint8的区别,uint8的操作仅仅是将一个double类型的小数点后面的部分去掉;但是im2uint8是将输入中所有小于0的数设置为0,而将输入中所有大于1的数值设置为255,再将所有其他值乘以255。

  图像数据在计算前需要转换为double,以保证精度;很多矩阵数据也都是double的,要想显示,必须先转换为图像的标准数据格式。
  如果转换前的数据符合图像数据标准(比如是double则要位于0~1之间),那么可以直接使用im2uint8。如果转换前的数据分布不合规律,则使用uint8,将其自动切割至0~255(超过255的按255),因此最好使用mat2gray,将一个矩阵转化为灰度图像的数据格式(double)。

3、double类型图像的显示

  图像数据在进行计算前要转化为double类型的,这样可以保证图像数据运算的精度。很多矩阵的很多矩阵数据也都是double的,要想显示它,必须先转换为图像的标准数据格式。

  如果直接运行imshow(I),显示的是一个白色的图像。这是因为imshow()显示图像时对double型是认为在0-1范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0~255范围。经过运算后范围在0-255之间的double型数据就被不正常得显示为白色图像了。

具体方法有:

  • imshow(I/256); 将图像矩阵转化到0-1之间

  • imshow(I,[]); 自动调整数据的范围以便于显示 (注意这里,必须是灰度图,负责不行)

  • imshow(uint8(I));

  • imshow(mat2gray(I));

上面的mat2gray是将最终获得的矩阵转化为灰度图像。常用的为:

A = im2uint8(mat2gray(result))

这样就将result矩阵转化为uint8类型的图像。

四、参考链接

  • matlab中各种数据类型及转换
  • 数据类型转换matlab,MATLAB常用数据类型的转换
http://www.lryc.cn/news/409488.html

相关文章:

  • Cocos Creator2D游戏开发(6)-飞机大战(4)-敌机产生
  • Hugo部署到Vercel踩大坑——全是XML文件?
  • 2024 暑假友谊赛-热身1
  • Nginx系列-11 HTTP消息处理流程
  • 前端知识--前端访问后端技术Ajax及框架Axios
  • 【前端/js】使用js读取本地文件(xml、二进制)内容
  • 初步入门C ++之类的概念
  • 什么是技术作家风格指南?
  • WebGIS学习——Cesium|Javascript
  • Qt,获取其他.exe文件的标准输出流的信息(printf/print的输出信息)
  • LeetCode 热题 HOT 100 (010/100)【宇宙最简单版】
  • Ubuntu24.04安装mysql-server小计,解决mysql_secure_installation时不能重置密码的问题
  • unity3d:TabView,UGUI多标签页组件,TreeView树状展开菜单
  • go语言map底层及扩容机制原理详解(下)
  • 网络协议二 : 使用Cisco Packet Traceer工具模拟网络环境,集线器,网桥,交换机,路由器,IP,同一网段
  • Aria2 任意文件写入漏洞
  • 成为git砖家(4): git status 命令简介
  • 2-48 基于matlab的EM算法聚类可视化程序
  • k8s 使用技巧
  • 学习笔记-系统框图传递函数公式推导
  • C++ - 基于多设计模式下的同步异步⽇志系统
  • git 相关内容
  • ElasticSearch(es)倒排索引
  • 【自然语言处理】概论(一):自然语言处理概要
  • flask 开始
  • 仕考网:公务员可以报考军队文职吗?
  • Java整理22
  • leetcode 408周赛 3234. 统计 1 显著的字符串的数量
  • 容器对比虚拟机有哪些不足?
  • C# 归并排序