gpt4 book ai didi

matlab - 频率:在MATLAB中使用FFT的分贝图

转载 作者:行者123 更新时间:2023-12-03 00:51:22 29 4
gpt4 key购买 nike

我正在尝试使用MATLAB导入WAV文件并创建如下所示的图表类型。我基本上是在尝试获取频率信息并根据分贝对其进行绘制。这是我正在使用的代码,但似乎无法正确提取频率信息:

[x fs]=wavread('filename.wav');
dt=1/fs;%% time interval

X=fft(x);
df=1/(length(x)*dt); %% frequency interval
f=(1:length(X))*df;%% frequency vector

%% frequency domain plot, freq in hertz
figure
plot(f,abs(X))

请帮忙!谢谢!

最佳答案

在代码“X”中包含波形信息,而不是频率信息。要获取声音文件的频率信息,可以使用FFT函数。我将使用此代码(更详尽,但仍很简单)来完成您想做的事情:

[FileName,PathName]=uigetfile('*.wav');
[y, Fs, nbits] = wavread(fullfile(PathName,FileName));
length_y=length(y);

NFFT = 2^nextpow2(length_y); % Next power of 2 from length of y
fft_y=fft(y,NFFT)/length_y;
f = Fs/2*linspace(0,1,NFFT/2+1);

semilogy(f,abs(fft_y(1:length(f))));
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')

我希望这对您有用。绘图将不会按照您显示的步骤进行,但也可以使用“楼梯”绘图功能来实现。

关于matlab - 频率:在MATLAB中使用FFT的分贝图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20823132/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com