簡體   English   中英

如何在MATLAB中繪制揚聲器的頻率響應

[英]How to plot in MATLAB the Frequency Response for a speaker

我試圖通過通過揚聲器播放20Hz至20KHz的rp聲並將揚聲器輸出聲音文件與原始輸入聲音文件進行比較來獲得揚聲器的頻率響應。 這是我到目前為止所擁有的,但是情節看起來並不像我期望的那樣。 Y軸似乎不是以dB為單位。 我不確定,這可能完全是錯誤的。 任何幫助是極大的贊賞。 謝謝! 頻率響應圖輸出

[y,fs] = wavread('LogChirp.wav');
[x,fs] = wavread('bose sweep 2 feet.wav');
y = reshape([y;zeros(145824-144000,1)],145824,1);
ydft = fft(x)./fft(y);
% Assume y has even length
ydft = ydft(1:length(y)/2+1);
% create a frequency vector
freq = 0:fs/length(y):fs/2;
% plot magnitude
ydft1 = smooth(ydft,.1);
p = semilogx(freq,ydft1);
p = plot(freq,abs(ydft));
set(p, 'Color', 'blue', 'LineWidth', 1);
xlabel('Frequency (Hz)');
ylabel('');
title('Frequency Response');
grid on;
%axis([20,20e3,-1,1]);

要使X和Y軸都以dB為單位,可以使用loglog函數繪制數據。 還要考慮在腳本中有兩個連續的繪圖指令

p = semilogx(freq,ydft1);
p = plot(freq,abs(ydft));

但不是“ hold on ”指令。

如果沒有“ hold on ”,則僅顯示最后一個圖形。

此外,這兩個繪圖指令使用不同類型的比例尺(第一個記錄,第二行記錄)MatLab不喜歡這樣,並在所有繪圖中保持其首度。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM