How to see freq response of a wave file

16 Ansichten (letzte 30 Tage)
moonman
moonman am 1 Nov. 2011
Kommentiert: 종민 손 am 29 Jul. 2020
Hi i am having a wave file
I want to see its frequency response.
How can i see that

Akzeptierte Antwort

Wayne King
Wayne King am 1 Nov. 2011
Again, if it's a signal and not a system, we don't say frequency response, but you can just use fft(). That gives you the DFT of the signal, so it is complex-valued. You can visualize the magnitude and phase responses separately. If your signal is real-valued, then the DFT is conjugate symmetric so you only have to keep the "positive" frequencies.
[y,fs] = wavread('foo.wav');
ydft = fft(y);
% I'll 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
subplot(211);
plot(freq,abs(ydft));
% plot phase
subplot(212);
plot(freq,unwrap(angle(ydft)));
xlabel('Hz');
  2 Kommentare
moonman
moonman am 1 Nov. 2011
Thanks again
for detailed answer
종민 손
종민 손 am 29 Jul. 2020
thanks!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (4)

Dr. Seis
Dr. Seis am 1 Nov. 2011
None of the above works? Try:
wave_file = 'name.wav';
[wave_data_time, sample_rate] = wavread(wave_file);
N_temp = length(wave_data);
N = 2^nextpow2(N_temp);
buff = floor((N-N_temp)/2)+1;
Nyq = sample_rate/2;
df = sample_rate/N;
f = -Nyq:df:Nyq-df;
wave_data_time_pad = zeros(size(f));
wave_data_time_pad(buff:buff-1+N_temp) = wave_data_time;
wave_data_freq = fftshift(fft(wave_data_time_pad));
figure;
plot(f,real(wave_data_freq),'b-',f,imag(wave_data_freq),'r-');
  2 Kommentare
Yasir Ali
Yasir Ali am 12 Mär. 2019
Iam not understanding code provided by you
my data is [y,fs]=audioread('filename.wav')
how to put it in above code kindly help
Yasir Ali
Yasir Ali am 12 Mär. 2019
I also need frequency respinse for it while fs =44100 and y=220500 ×2

Melden Sie sich an, um zu kommentieren.


Honglei Chen
Honglei Chen am 1 Nov. 2011
Let's say you have a wav file called foo.wav, you can use spectrum object to see its spectrum
[y,fs] = wavread('foo.wav');
psd(spectrum.periodogram,y,'Fs',fs);
HTH
  2 Kommentare
moonman
moonman am 1 Nov. 2011
Hi
thanks
what is capaital Fs and small fs
what values should i give to them
thanks a lot
moonman
moonman am 1 Nov. 2011
ok got it
but it is power spectral density
i need freq response

Melden Sie sich an, um zu kommentieren.


Naz
Naz am 1 Nov. 2011
f='name.wav';
[x,sr]=wavread(f) ;
Ts=1/sr;
N=2^15;
x=x(1:N)';
time=Ts*(0:length(x)-1);
figure(1)
magx=abs(fft(x));
ssf=(0:N/2-1)/(Ts*N);
plot(ssf,magx(1:N/2))

moonman
moonman am 1 Nov. 2011
Can anyone help me I am having wave file I want to see its freq response How can i see that

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by