Matlab 将8位音频信号转换为低位编码

Matlab 将8位音频信号转换为低位编码,matlab,audio,signal-processing,Matlab,Audio,Signal Processing,我对交给我们的作业问题感到困惑。问题内容如下:使用16位、8位、4位、2位、1位表示8KHz采样时的语音信号,观察每种情况下的语音质量和波形差异,并记下内容。。所以现在我看了一些音频录制工具,甚至在MATLAB中尝试了各种音频录制API,但其中使用的最少位数是8位。所以,如果我想把它们转换成4位或更低,我该怎么做呢。我是否必须手动进行循环并更改矩阵的元素,或者我是否可以获得一个工具。注意:这只是一门入门课程,我们不希望对这些事情了解太多。除此之外,你需要的第一个直觉是理解位移位的意义。假设你从一

我对交给我们的作业问题感到困惑。问题内容如下:使用16位、8位、4位、2位、1位表示8KHz采样时的语音信号,观察每种情况下的语音质量和波形差异,并记下内容。。所以现在我看了一些音频录制工具,甚至在MATLAB中尝试了各种音频录制API,但其中使用的最少位数是8位。所以,如果我想把它们转换成4位或更低,我该怎么做呢。我是否必须手动进行循环并更改矩阵的元素,或者我是否可以获得一个工具。注意:这只是一门入门课程,我们不希望对这些事情了解太多。除此之外,你需要的第一个直觉是理解位移位的意义。假设你从一个16位的数字开始-这里可能值的范围是2^16,这意味着你可以有65536个不同的值,可能从0到65536-1,或者从-32768到+32767,如果你正在处理的输入信号表面上可以从-1到0变化到+1标准音频信号,这个音频曲线可以自由映射到65536,因此-1可以映射到-32768和+1到32767,如果我们只有8位来表示信号,因为它从-1到+1变化,2^8==256个可能的值,这里我们可以将-1映射到-128,+1映射到128。4位、2位的类似映射

现在要使用位移位实现此功能,如果您从16位表示开始,需要将其转换为8位,只需将16位数字向右移位8位,即可丢弃最低有效位位置:

intout = bitshift(A,k) 

返回左移k位的值,相当于乘以2k。k的负值对应于右移位。因此,如果变量A是16位整数,对于k,我们使用-8,这将实现位移位,我们需要将16位数字转换为8位整数等价物。到现在为止,您可能已经猜到了,因为我们正在逐步将位深度从16降低到8。。。我们的分辨率降低,这将被视为声音,深度和细微差别的损失较小,直到最后在第1位(只能从0到1变化),音频将变得非常难以理解-我希望这有助于

您不需要减少实际位数,只需将音频量化到所需的级别。因此,只需要一些16位音频,并对其进行适当量化,以模拟8、4、2、1位音频。如果这是一个在线课程,我相信在论坛上提出这样的问题是可以的。只要你不寻求解决方案,讨论你面临的问题通常是受欢迎的。