Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Plotting frequency response to window sinc funtion in matlab

Status
Not open for further replies.

Crasen

Newbie level 1
Joined
Apr 9, 2016
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
16
I am taking DSP and the instructor explains theory but has not shown a single example all semester. One problem on the current homework assignment is to plot the frequency response of a windowed sinc filter using a Blackman window. The sample rate is 10 Khz and cutoff frequency is .195. He has given us M= 800. We are suposed to use the FFT instead of the freqz funtion to plot the normalized response in db from 1500 Hz to 2500 Hz. Here is the code I am trying to use, can anyone see anthing obvious I am missing. I have tried everything I could find so far online to try. The frequency response does look resonable when I use freqz(h).


Code dot - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
fc = 0.1950;
freq = linspace(1500, 2500, 801);
s3 = 1;
for n = 0: 800;   
    if n == 400
        d(s3) = 2*pi*fc;
    else
d(s3) =  sin(2.* pi.*fc.*(n -400))./(n-400).*(0.42- 0.5 .*cos(n.*2.*pi./800)+0.08.*cos(n.*4.*pi/800));      
    end
s3 = s3 +1;
end
ksum = sum(d);
k = 1/ ksum;
for n1 = 1: 801
    if n1 == 400
         h(n1) = 2*pi*fc.*k;
    else
        h(n1) = k * sin(2.* pi.*fc.*(n1 -400))./(n1-400).*(0.42- 0.5 .*cos(n1.*2.*pi./800)+0.08.*cos(n1.*4.*pi/800));   
    end  
end
H = fft(h,1024);
for s= 1: 801
ha(s) = (abs(H(s))./H(1));
hdb(s) = 20*log10(ha(s));
ahdb(s) =(-abs(hdb(s)));
end
      
  plot(freq, ahdb), xlabel('Frequency (Hz)'), ylabel('Amplitude(dB)'), title('Frequency Response of Filter'), axis([1500 2500 -120 20]);

 
Last edited by a moderator:

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top