【问题标题】:Matlab subtract without rounding off negative number to zeroMatlab减法而不将负数四舍五入为零
【发布时间】: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


【解决方案1】:

uint8 只能包含 0 到 255 之间的值 - 它不能包含负值。使用带符号的数据类型(第一个字母没有u)。

顺便说一句,您有充分的理由指定数据类型吗?

【讨论】:

    猜你喜欢
    • 2011-07-16
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    相关资源
    最近更新 更多