1 //
2 // kbd_window_example.c
3 //
4 // Kaiser-Bessel derived window example
5 //
6
7 #include <stdio.h>
8
9 #include "liquid.h"
10
11 #define OUTPUT_FILENAME "kbd_window_example.m"
12
main()13 int main() {
14 // options
15 unsigned int n=64; // window length
16 float beta = 20.0f; // Kaiser beta factor
17
18 unsigned int i;
19 float w[n];
20 liquid_kbd_window(n,beta,w);
21
22 FILE*fid = fopen(OUTPUT_FILENAME,"w");
23 fprintf(fid,"%% %s: auto-generated file\n\n", OUTPUT_FILENAME);
24 fprintf(fid,"clear all;\n");
25 fprintf(fid,"close all;\n\n");
26 fprintf(fid,"n=%u;\n",n);
27
28 for (i=0; i<n; i++) {
29 fprintf(fid,"w(%4u) = %12.4e;\n", i+1, w[i]);
30 printf("w[%4u] = %12.4e;\n", i, w[i]);
31 }
32
33 fprintf(fid,"nfft=1024;\n");
34 fprintf(fid,"W=20*log10(abs(fftshift(fft(w/sum(w),nfft))));\n");
35 fprintf(fid,"f=[0:(nfft-1)]/nfft-0.5;\n");
36 fprintf(fid,"t=0:(n-1);\n");
37 fprintf(fid,"figure;\n");
38 fprintf(fid,"subplot(2,1,1);\n");
39 fprintf(fid," plot(t,w,'Color',[0 0.25 0.5],'LineWidth',2);\n");
40 fprintf(fid," grid on;\n");
41 fprintf(fid," xlabel('sample index');\n");
42 fprintf(fid," ylabel('window');\n");
43 fprintf(fid," axis([0 n-1 -0.1 1.1]);\n");
44 fprintf(fid,"subplot(2,1,2);\n");
45 fprintf(fid," plot(f,W,'Color',[0 0.5 0.25],'LineWidth',2);\n");
46 fprintf(fid," grid on;\n");
47 fprintf(fid," xlabel('normalized frequency');\n");
48 fprintf(fid," ylabel('PSD [dB]');\n");
49 fprintf(fid," axis([-0.5 0.5 -140 20]);\n");
50 fprintf(fid,"title(['Kaiser-Bessel derived window']);\n");
51
52 fclose(fid);
53 printf("results written to %s\n", OUTPUT_FILENAME);
54
55 printf("done.\n");
56 return 0;
57 }
58
59