我有一个文件.pcm哪个音频数据。在concret中,17816个字节对应于8908个样本(44100 Hz和16位)。我想把这些样本作为双数据读取,但问题是double是8字节。所以我的问题是我该怎么办?当我在Matlab中使用wavread函数执行此操作时,Matlab会创建一个包含8908个样本的双变量,所以我想在c ++中执行相同操作。
答案 0 :(得分:1)
读取16位(可能是unsigned short
或uint16_t
)。然后将该值转换为double
。
答案 1 :(得分:1)
我不确定MATLAB究竟做了什么,但可能是它的双值介于0(或-1)和1之间。
在这种情况下,您必须添加缩放系数(分母分母):
int16_t filevalue;
double dvalue = filevalue / 32768.;
或
uint16_t filevalue;
double dvalue = filevalue / 65536.;