【问题标题】:Save in double variable samples of 16 bits保存在 16 位的双变量样本中
【发布时间】:2014-01-15 14:17:36
【问题描述】:

我有一个包含音频数据的 .pcm 文件。具体来说,17816 个字节对应于 8908 个样本(44100 Hz 和 16 位)。我想将这些样本读取为双精度数据,但问题是双精度是 8 个字节。

我该怎么办?当我在 Matlab 中使用 wavread 函数执行此操作时,Matlab 创建了一个包含 8908 个样本的双变量,所以我想在 c++ 中做同样的事情。

【问题讨论】:

  • 将 16 位整数转换为 double 在 C++ 中非常简单:uin16_t i = 1337; double d = i;

标签: c++ matlab signal-processing


【解决方案1】:

我不确定 MATLAB 究竟做了什么,但大概它的 double 值介于 0(或 -1)和 1 之间。

在这种情况下,您必须添加一个比例因子(分别为分母):

int16_t filevalue;
double dvalue = filevalue / 32768.;

uint16_t filevalue;
double dvalue = filevalue / 65536.;

【讨论】:

    【解决方案2】:

    读取 16 位(可能是 unsigned shortuint16_t)。然后将该值转换为double

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 2020-12-03
      相关资源
      最近更新 更多