How to see freq response of a wave file
    12 views (last 30 days)
  
       Show older comments
    
Hi i am having a wave file
I want to see its frequency response.
How can i see that
0 Comments
Accepted Answer
  Wayne King
    
      
 on 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');
More Answers (4)
  Dr. Seis
      
 on 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 Comments
  Yasir Ali
 on 12 Mar 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
  Honglei Chen
    
      
 on 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
  Naz
      
 on 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))
0 Comments
See Also
Categories
				Find more on Spectral Analysis in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!