matlab数据类型转换——int8转换成unit8

怎么样吧matlab里面的int8数据类型转换成unit8型!用C++builder读取图像之后传送到matlab进行处理的数据是int8型,范围是-128~127,但是... 怎么样吧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]。
展开
 我来答
lpoplar1981
推荐于2017-11-28
知道答主
回答量:12
采纳率:0%
帮助的人:0
展开全部
最简单的方法是把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中循环的效率不及矩阵直接运算的高。
宝成局琴
2019-01-13 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:26%
帮助的人:1016万
展开全部
最简单的方法是把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中循环的效率不及矩阵直接运算的高。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
befirm7769e3
2010-12-25
知道答主
回答量:12
采纳率:0%
帮助的人:0
展开全部
+128,再将中间结果存为uint8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-12-25
展开全部
加128怎么会溢出?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vltso14
2010-12-26 · TA获得超过190个赞
知道答主
回答量:272
采纳率:0%
帮助的人:199万
展开全部
功能性用法,编程,模型建立。
方方面面,需要你多使用,最好有本书刊来看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式