matlab - MATLAB中的量化噪声

标签 matlab audio signal-processing

我正在MATLAB中录制一些声音,然后将其从16位降到1位,因此我可以计算SNR,但没有得到合理的SNR数字。有人指出我正确的方向吗?

% Store recorded audio signal in numeric array
signal = getaudiodata(recording, 'int16');

quanRate = 16;
quantsignal = signal;

while quanRate ~= 1
 quanRate = quanRate - 1;

 quantsignalHold = quantsignal;

 % Remove LSB using bitshift
 quantsignal = bitshift(quantsignal, -1);

 % Plot the quantized signal
 figure()
 plot(quantsignal);
 title(['Sample recording at ' num2str(quanRate) '-bits']);
 xlabel('Sample number') % x-axis label
 ylabel('Sample value') % y-axis label

 % Calculate the quantisation error 
 quantError = quantsignal - signal; 

 % Calculate the SNR
 SNR = snr(signal,quantError); 

 disp(['The SNR of the ' num2str(quanRate) '-bit recording is: ' num2str(SNR) ' dB'])
end

最佳答案

通过将信号的样本向右移动,可以将其除以2。此量化信号与原始信号之间的差始终是信号幅度的一半,而不是量化误差。

您可能想用量化

floor( signal / N ) * N + N/2;

或类似的内容(N为2的幂,每次循环迭代都会增加)。

关于matlab - MATLAB中的量化噪声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51796477/

相关文章:

matlab - 在matlab中获取第二个最大元素

matlab - 以快速、矢量化的方式将二进制矩阵转换为最后一个非零索引的矢量

matlab - 从V1逆时针转到V2,如何判断V3是否在V1和V2之间?

通话后Android麦克风灵敏度发生变化

java - 我如何在Java上检测声音频率

c++ - 试图仅在 C++ 中模拟 Matlab "unique"函数

audio - 删除ReCaptcha中的音频?

javascript - 点击链接标签播放音效

facebook-graph-api - Facebook Graph API 是否支持音频文件上传?

java - 用Android测量音量