音频信号的归一化并恢复到原始的matlab

时间:2014-04-06 13:17:21

标签: matlab audio steganography

我正在做一个音频速记学项目。我需要在音频信号(.wav文件)中嵌入一些文本。 所以我将音频信号从-1转换为1(双倍)到-32767到+32767(int16),因此我将数据冷嵌入系数的LSB中。 现在的问题是我不知道如何从int16获取它们各自的两倍当量值。

我已使用以下代码进行规范化:

    [y, fs, nBits,opts]=wavread('one.wav');
     y2=y-(min(y));
     y2=y2/max(y2);
     y2=y2* (2^16 - 1) - 2^15;
     y2b=int16(y2);

任何人都可以指导我这个相反的过程吗?

2 个答案:

答案 0 :(得分:0)

您似乎需要保存(并存储)ymin = min(y)y2max = max(y2)以进行撤消。然后获取int16的双版本并根据需要执行反转过程:

y3 = double(y2b);
y3 = (y3 + 2^15) / (2^16 - 1);
y3 = y3 * y2max;
y3 = y3 + ymin;

然后根据需要将y3存储到输出文件中。

答案 1 :(得分:0)

elomage颠倒了正常化,我没有看到任何理由这样做,因为lsb迷失了。

double(x)/intmax(class(x))