【发布时间】:2014-06-03 05:46:54
【问题描述】:
我有两个数组,
X = uint8 ([ 255 0 75; 44 225 100]);
Y = uint8 ([ 50 50 50; 50 50 50]);
当我执行 X-Y 时,我得到的结果是
205 0 25
0 175 50
我期待的是
205 -50 25
-6 175 50
如何实现这一点。请帮忙。
【问题讨论】:
-
你在减去无符号类型
-
你不能期望带有
uint8(无符号整数)的负值 -
使用
int16或其他类 (double) ? -
我想说的一切都已经被所有这些了不起的人说了。我的评论纯粹是出于好奇:为什么数组是无符号数据类型很重要?根据定义,无符号数据类型不能包含负值(因此 无符号)。您是否尝试将数组转换为可以处理负值的东西? (
'double', 'int8', 'int16'...?) 请记住,使用带符号的数据类型会将精度降低一半,因为符号需要一位(即uint8: [0,255] 而int8: [-128,127]) . -
@rayryeng 我的直觉是 OP 的原始数据为
uint8,并且正在对数据的某处执行减法运算。 OP 为我们提供了可重复性的代码,但最终使它更加混乱。顺便说一句,当除了 OP 之外的每个人都在谈论时,这让我们看起来很疯狂。
标签: matlab