matlab数据类型转换——int8转换成unit8
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab数据类型转换——int8转换成unit8相关的知识,希望对你有一定的参考价值。
怎么样吧matlab里面的int8数据类型转换成unit8型!
用C++builder读取图像之后传送到matlab进行处理的数据是int8型,范围是-128~127,但是matlab的程序是对unit8的数据进行处理(范围是0~255),试了很多方法都没有用。PS:不是简单的把int8数据都加一个128哦,这样会溢出。
加128绝对会溢出,例如int8型的55,加完128之后就变成了127了,也就是int8的最大值
我希望大家能把具体的语句实现写出来,例如I=[-55 -66 77 88]是int8型的,把I变成unit8型的数据类型结果是I=[73 62 205 216]。
即
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中循环的效率不及矩阵直接运算的高。 参考技术A 最简单的方法是把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中循环的效率不及矩阵直接运算的高。 参考技术B +128,再将中间结果存为uint8 参考技术C 加128怎么会溢出? 参考技术D 功能性用法,编程,模型建立。
方方面面,需要你多使用,最好有本书刊来看
kettle怎么把string转换成int类型
参考技术A 用字段选择-元数据里设置,或者用JS脚本以上是关于matlab数据类型转换——int8转换成unit8的主要内容,如果未能解决你的问题,请参考以下文章