保存为16位的双变量样本

时间:2014-01-15 14:17:37

标签: c++ matlab signal-processing

我有一个文件.pcm哪个音频数据。在concret中,17816个字节对应于8908个样本(44100 Hz和16位)。我想把这些样本作为双数据读取,但问题是double是8字节。所以我的问题是我该怎么办?当我在Matlab中使用wavread函数执行此操作时,Matlab会创建一个包含8908个样本的双变量,所以我想在c ++中执行相同操作。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

在这种情况下,您必须添加缩放系数(分母分母):

int16_t filevalue;
double dvalue = filevalue / 32768.;

uint16_t filevalue;
double dvalue = filevalue / 65536.;
相关问题