matlab int8 矩阵,unit8_matlab数据类型转换——int8转换成unit8
在一个驱动程序中看到uint16,uint32,unit8,int8...
uint16 :无符号16bit整数,
uint32:无符号32bit整数,
unit8:无符号8bit整数,
int8:有符号8bit整数。
其作用是程序更加简洁,增强可移植性和可维护性,尤其是在16位机器,32位,或者是64位机器上相互之间移植的时候只需要修改这些宏定义就可以满足要求了,而不需要去修改整个工程里边的每一个变量定义。
在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等。咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的疑问。论坛上就有人问:以*_t结尾的类型是不是都是long型的?在baidu上查一下,才找到答案,这时才发觉原来自己对C掌握的太少。
那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近。它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是其它数据类型。
uint8_t,uint16_t,uint32_t等都不是什么新的数据类型,它们只是使用typedef给类型起的别名,新瓶装老酒的把戏。不过,不要小看了typedef,它对于你代码的维护会有很好的作用。比如C中没有bool,于是在一个软件中,一些程序员使用int,一些程序员使用short,会比较混乱,最好就是用一个typedef来定义,如:
typedef char bool。
一般来说,一个C的工程中一定要做一些这方面的工作,因为你会涉及到跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以让你最有效的维护你的代码。为了用户的方便,C99标准的C语言硬件为我们定义了这些类型,我们放心使用就可以了。
matlab图像处理关于unit8的问题
为了节省存储空间,matlab为图像提供了特殊的数据类型uint8(8位无符号整数),以此方式存储的图像称作8位图像。
imread把灰度图像存入一个8位矩阵,当为RGB图像时,就存入8位RGB矩阵中。
因此,matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)存储和运算。所以要先将图像转为double格式的才能运算,
I2=im2double(I1) %把图像I1转换成double精度类型 (假设图形矩阵范围0~255)
或者
I64=double(I8)/255; %uint转换成double
如果不转换,计算会产生溢出。
matlab unit8是什么类型的数据?
写错了吧,应该是uint8,表示变量是无符号整数,范围是0到255.
uint8是指0~2^8-1 = 255数据类型,一般在图像处理中很常见。
matlab 中如何将unit8转成double型
在矩阵中使用的数据类型是double。因此可以通过语句I2=im2double(I1) ;把图像数组I1转换成double精度类型;如果不转换,在对uint8进行加减时会产生溢出,可能提示的错误为:Function '*' is not defined for values of class 'uint8'
再给你几条语句,希望对你有帮助:
im2double():将图像数组转换成double精度类型
im2uint8():将图像数组转换成unit8类型
im2uint16():将图像数组转换成unit16类型
matlab unit8格式
代表无符号的8位整数,最大值为255。
MATLAB支持的数据类型有:
double -- Double precision floating point numeric array
logical -- Logical array
char -- Character array
single -- Single precision floating-point numeric array
float -- Double or single precision floating-point numeric array
int8 -- 8-bit signed integer array
int16 -- 16-bit signed integer array
int32 -- 32-bit signed integer array
uint32 -- 32-bit unsigned integer array
int64 -- 64-bit signed integer array
integer -- An array of any of the 8 integer classes above
numeric -- Integer or floating-point array
cell -- Cell array
struct -- Structure array
function_handle Function handle
'class_name' Custom MATLAB object class or Java class
matlab中如何将unit8转换为double
内存不足,说明你的数据量太大了,一个double是8字节,值uint8的8倍。
试试single看看,single是double的一半内存。
要是还内存不够,除非你改算法;或者用64bit的matlab试试。
matlab数据类型转换——int8转换成unit8
最简单的方法是把I改为double型后做+128计算再转为uint8。
即
I=double(I)+128;
I=uint8(I);
当然你也可逐点遍历I,以求得新的一个unit8矩阵J,通过判断正负给该点J(i,j)赋值:
若I(i,j)>=0时:J(i,j)=128+uint8(I(i,j));
若I(i,j)<0时, J(i,j)=128-uint8(abs(I(i,j)));
但需要说明的是matlab中循环的效率不及矩阵直接运算的高。
matlab int8 矩阵,unit8_matlab数据类型转换——int8转换成unit8相关推荐
- python文本数据转换数值矩阵_python numpy矩阵的数据类型转换
在python中,numpy矩阵的数据类型转换需要调用astype(),直接修改dtype是无效的.调用astype返回数据类型修改后的矩阵,但是源数据的类型不会变,需要再对源数据的赋值进行操作才可以 ...
- python numpy矩阵的数据类型转换
在python中,numpy矩阵的数据类型转换需要调用astype(),直接修改dtype是无效的.调用astype返回数据类型修改后的矩阵,但是源数据的类型不会变,需要再对源数据的赋值进行操作才可以 ...
- 时间戳处理:vue中请求接口 返回的数据 将时间戳转换成时间 并渲染到页面
问题: 今天遇到一个问题是,请求接口,返回了很多的时间戳数据.将时间戳转换成时间.并渲染到页面上.之前有篇文章讲的是单个时间戳的转换.这次是多个数据.我有点不知所措了. 分析: 经过思考,我们可以这样 ...
- php 数据类型转换强制转换的三种方式
(int).(integer):转换成整形 (float).(double).(real):转换成浮点型 (string):转换成字符串 (bool).(boolean):转换成布尔类型 (array ...
- python矩阵变成图片_Python图片转换成矩阵,矩阵数据转换成图片
# coding=gbk from PIL import Image import numpy as np # import scipy def loadImage(): # 读取图片 im = Im ...
- GPS模块输出的NMEA数据ddmm.mmmm转换成dd.ddddd,在google Earth Pro中描点
GPS模块输出的数据是NMEA格式,其中GPGGA字段包含我们需要的经纬度信息. 例:$GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,12.2 ...
- 类型转换——int转换成char(截短)
转自:http://blog.sina.com.cn/s/blog_70ec9a6f010145wr.html int a,b; //keil c里的int,也就是16位. a=0000; b=0x ...
- Matlab:将Prt的txt文件转换成tif
clc clear %%读取prt的txt数据:a为两个十六进制数x1,x2为紧紧挨在的组合x1x2 %头文件的分布是 %a(1)a(2)a(3)a(4) %a(5)a(6)a(7)a(8) %-- ...
- 解决在ROS系统下录制Ti毫米波雷达点云数据,并转换成pcd文件时间戳为零的问题
问题描述 本人使用的是TI公司的AWR1443BOOST,运行官方的ROS Point Cloud Visualizer示例,可以得到二维和三维的点云信息.利用rosbag record命令可以记录一 ...
最新文章
- 速学c++(2)-helloworld工程
- linux命令clock,简单了解Linux系统中clock命令的使用方法
- spring4.0基于Java配置_Spring MVC学习笔记之Controller查找(基于Spring4.0.3)
- 如何dos中查看当前MySQL版本信息?
- python基础的学习
- ContOS 7 安装Jenkins
- 如何打开.chm文档(比如华为产品手册等)
- 【渝粤教育】国家开放大学2018年秋季 2080T现代教育思想 参考试题
- MATLAB生成数组
- java ajax 返回乱码,解决使用$.ajax的时候得到返回乱码
- 算法导论 资源 课后答案 PDF
- 机器学习——概率论基础
- 初出茅庐的小李第23篇博客之WiFi模块建立TCP通信并获取B站粉丝数据
- 计算机图形图像设计构图的基本形式,基本功!构图基本法则与基本形式
- 学习oracle之后的感悟,学习培训后的收获和感想
- Domain Adaptation理论分析
- Flutter 2.10 正式发布,包含 Windows 平台正式版,快来看看有什么新内容
- windows使用docker-compose安装PHP框架hyperf
- 工程数学 | 两种中值定理傻傻分不清
- C#中Property和Attribute的区别
热门文章
- 【C 语言】二级指针作为输入 ( 指针数组 | 将 二级指针 作为函数输入 | 抽象函数业务逻辑 )
- 【错误记录】Flutter 混合开发报错 ( java.nio.file.FileSystemException: xxx/R.jar: 另一个程序正在使用此文件,进程无法访问。 )
- 【Flutter】Banner 轮播组件 ( flutter_swiper 插件 | Swiper 组件 )
- 【Android 内存优化】libjpeg-turbo 函数库交叉编译与使用 ( 交叉编译脚本编写 | 函数库头文件拷贝 | 构建脚本配置 | Android Studio 测试函数库 )
- BinaryTreeTraversal(二叉树遍历)
- ql的python学习之路-day10
- 【iOS7开发笔记】tableview之通过代码自定义cell(cell的高度不一致)
- 俄罗斯方块:win32api开发
- Java的登陆验证问题
- 「每日分享」CPU Cache 与缓存行