我想激发一个具有恒定幅度啁啾声的扬声器,该啁啾声扫过音频频带中的所有频率。我从这个Audio Check - High Definition Audio Test Files下载了一个测试文件。
我使用以下代码绘制文件的对数大小,我也将其用于其他应用程序。
[X Fs nbits] = wavread('audiocheck.net_hdchirp_96k_-3dBFS_log.wav');
X = X(:,1);
fft_prep = fftshift(fft(X));
fft_mag = real(fft_prep).^2 + imag(fft_prep).^2;
pos_fft=fft_mag(ceil(length(fft_mag)/2+1:length(fft_mag)));
db_fft=20*log10(pos_fft);
figure(1);
plot(linspace(0,48000,length(db_fft)), db_fft);
我看到这张图:
我希望看到一个恒定的幅度响应。我的一个朋友提到了Parseval 定理如何指出在不同频率下会有不同的能量。我找到了这个关于 Parseval 定理的链接,并且在“光谱特征和啁啾的能量”一节中也说:
为了提高宽带测量的质量,激励信号的重要和期望的频谱特性是: 具有最小波动(波纹)的平坦幅度谱以及在生成的(激励)带宽内没有过冲 Bexc =ffin - fst;带宽 Bexc 之外的幅度谱急剧下降;最大能量效率,即位于生成(激励)带宽 Bexc 内的能量与信号总能量之间的比率。
为了避免担心别人发出的唧唧声。我也试图在 Matlab 中生成一个啁啾声,我看到以下响应:
t = 0:0.001:10; % 10 seconds @ 1kHz sample rate
fo = 10; f1 = 400; % Start at 10Hz, go up to 400Hz
X = chirp(t,fo,10,f1,'logarithmic');
fft_prep = fftshift(fft(X));
fft_mag = abs(fft_prep);
pos_fft = fft_mag(ceil(length(fft_mag)/2)+1:length(fft_mag));
db_fft = 20*log10(pos_fft);
figure(1);
plot(linspace(fo,f1,length(db_fft)), db_fft);
如何在 Matlab 的音频范围内生成相对恒定的幅度扫描,如上图 8 所示?欢迎任何建议,我感谢您的帮助。