You are here: Home Academic Course Info docs ucme663 v3_win.m
Document Actions

v3_win.m

by zopeown last modified 2007-04-23 12:02
% v3_win.m % % Script to create and plot both time and frequency % domain characteristics of common DSP windows % %********************************************************************** % Author: Randall J. Allemang % Date: 18-Apr-94 % Structural Dynamics Research Lab % University of Cincinnati % Cincinnati, Ohio 45221-0072 % TEL: 513-556-2725 % FAX: 513-556-3390 % E-MAIL: randy.allemang@uc.edu %********************************************************************* % plt=input('Store Results to File (No=0, Yes=1): (0) '); if isempty(plt),plt=0,end; n=input('Enter Time Blocksize: (1024) '); if isempty(n),n=1024,end; loop=1; while(loop==1), window=menu('Enter Window Type: ', ... 'P100 - Hamming ', ... 'P110 - Hanning ', ... 'P200 ', ... 'P201 ', ... 'P220 - Hanning * Hanning ', ... 'P301 - Flattop ', ... 'P310 - Flattop ', ... 'P330 - Hanning * Hanning * Hanning ', ... 'Flattop (B&K)', ... 'Flattop (HP)', ... 'BLACKMAN', ... 'P000 - Boxcar', ... 'User Defined', ... 'EXIT'); if isempty(window),window=1,end; if(window==1), % P100 - Hamming a0=1.0; a1=2*0.428752; a2=0; a3=0; a4=0; end; if(window==2), % P110 - Hanning a0=1.0; a1=1.0; a2=0; a3=0; a4=0; end; if(window==3), % P200 a0=1.0; a1=2*0.585956; a2=2*0.0922245; a3=0; a4=0; end; if(window==4), % P201 a0=0.999028; a1=2*0.925752; a2=2*0.351960; a3=0; a4=0; end; if(window==5), % P220 - Hanning * Hanning a0=1.0; a1=2*0.666667; a2=2*0.166667; a3=0; a4=0; end; if(window==6), % P301 - Flattop a0=0.9994484; a1=2*0.955728; a2=2*0.538289; a3=2*0.0915810; a4=0; end; if(window==7), % P310 - Flattop a0=1.0; a1=2*0.684988; a2=2*0.202701; a3=2*0.0177127; a4=0; end; if(window==8), % P330 - Hanning * Hanning * Hanning a0=1.0; a1=2*0.75; a2=2*0.30; a3=2*0.05; a4=0; end; if(window==9), % FLATTOP (B&K) a0=1.00; a1=1.93; a2=1.29; a3=0.388; a4=0.322; end; if(window==10), % FLATTOP (HP) a0=1.00; a1=1.93; a2=1.29; a3=0.388; a4=0.322; end; if(window==11), % BLACKMAN a0=0.42; a1=0.50; a2=0.08; a3=0; a4=0; end; if(window==13), % User Defined a0= input('a0 Coefficient: (1.0)'); if isempty(a0),a0=1.0,end; a1= input('a1 Coefficient: (0.5)'); if isempty(a1),a1=0.5,end; a2= input('a2 Coefficient: (0.4)'); if isempty(a2),a2=0.4,end; a3= input('a3 Coefficient: (0.3)'); if isempty(a3),a3=0.3,end; a4= input('a4 Coefficient: (0.2)'); if isempty(a4),a4=0.2,end; end; if(window==14), break end; % % Create Window % w = (a0 - a1*cos(2*pi*(0:n-1)/(n-1)) + a2*cos(4*pi*(0:n-1)/(n-1)) ... - a3*cos(6*pi*(0:n-1)/(n-1)) + a4*cos(8*pi*(0:n-1)/(n-1)))'; % Normalize window w=w./(a0+a1+a2+a3+a4); if(window==12), w=ones(n,1); end; % % Plot Time Window % dt=(0:n-1)/(n-1); plot(dt,w),grid xlabel('Time: (0-T)') ylabel('Amplitude') pause if(plt==1),print -f1 -deps v3_win_t.eps, end; % % Plot Time Window with random data % y=5.0*(rand(1024,1)-0.5); dt=(0:n-1)/(n-1); data=y.*w; plot(dt,data),grid xlabel('Time: (0-T)') ylabel('Amplitude') pause if(plt==1),print -f1 -deps v3_win_4.eps, end; % % Plot Time Window with sine data % y=5.0*sin(21*pi*(0:n-1)/(n-1)); dt=(0:n-1)/(n-1); data=y'.*w; plot(dt,data),grid xlabel('Time: (0-T)') ylabel('Amplitude') pause if(plt==1),print -f1 -deps v3_win_5.eps, end; % % Plot Time Window with sine data and random data % y=5.0*sin(21*pi*(0:n-1)/(n-1))+5.0*(rand(1,1024)-0.5); data=y'.*w; dt=(0:n-1)/(n-1); plot(dt,data),grid xlabel('Time: (0-T)') ylabel('Amplitude') pause if(plt==1),print -f1 -deps v3_win_6.eps, end; % % Plot frequency domain result with Time Window % with sine data and random data % DATA=fft(data); DATA-fftshift(DATA); df=(0:n/2-1); semilogy(df,abs(DATA(1:512,1))),grid xlabel('Frequency: (Delta f)') ylabel('Amplitude') pause if(plt==1),print -f1 -deps v3_win_6.eps, end; % % Plot frequency domain result with Time Window % with sine data and random data % semilogy(df(1:100),abs(DATA(1:100))),grid xlabel('Frequency: (Delta f)') ylabel('Amplitude') pause if(plt==1),print -f1 -deps v3_win_7.eps, end; % % % Plot Frequency Window % N=8*n; ww=zeros(N,1); ww(1:n)=w; % plot(ww) % pause W=fft(ww); W=W./W(1); for ii=1:N if(W(ii)==0), W(ii)=1e-5;,end; end; df=(0:n/4-1)/(8); semilogy(df,abs(W(1:(n/4)))),grid xlabel('Frequency: (Delta f)') ylabel('Amplitude') pause if(plt==1),print -f1 -deps v3_win_1.eps, end; df=[]; df=(0:n/8-1)/(8); semilogy(df,abs(W(1:(n/8)))),grid xlabel('Frequency: (Delta f)') ylabel('Amplitude') pause if(plt==1),print -f1 -deps v3_win_2.eps, end; W=fftshift(W); df=[]; df=(1:N)/(8)-N/16; semilogy(df(N/2-128:N/2+128),abs(W(N/2-127:N/2+129))),grid xlabel('Frequency: (Delta f)') ylabel('Amplitude') pause if(plt==1),print -f1 -deps v3_win_3.eps, end; end