123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- % Copyright David Rowe 2012
- % This program is distributed under the terms of the GNU General Public License
- % Version 2
- %
- % Plot amplitude modelling information from dump files to test and develop
- % LPC post filter.
- function pllpcpf(samname, f)
-
- % switch some stuff off to unclutter display
- plot_Am = 0;
- plot_Amq = 0;
- plot_err = 0;
- plot_lsp = 0;
- plot_snr = 0;
- plot_vsnr = 0;
- plot_sw = 0;
- plot_pw = 1;
- plot_pwb = 1;
- plot_rw = 1;
- sn_name = strcat(samname,"_sn.txt");
- Sn = load(sn_name);
- sw_name = strcat(samname,"_sw.txt");
- Sw = load(sw_name);
- sw__name = strcat(samname,"_sw_.txt");
- if (file_in_path(".",sw__name))
- Sw_ = load(sw__name);
- endif
- model_name = strcat(samname,"_model.txt");
- model = load(model_name);
- modelq_name = strcat(samname,"_qmodel.txt");
- if (file_in_path(".",modelq_name))
- modelq = load(modelq_name);
- endif
- % Pw (LPC synth filter spectrum) before post filter
- pwb_name = strcat(samname,"_pwb.txt");
- if (file_in_path(".",pwb_name))
- Pwb = load(pwb_name);
- endif
- % Rw (Post filter spectrum)
- rw_name = strcat(samname,"_rw.txt");
- if (file_in_path(".",rw_name))
- Rw = load(rw_name);
- endif
- % Pw (LPC synth filter spectrum) after post filter
- pw_name = strcat(samname,"_pw.txt");
- if (file_in_path(".",pw_name))
- Pw = load(pw_name);
- endif
- Ew_on = 1;
- k = ' ';
- do
- figure(1);
- clf;
- s = [ Sn(2*f-1,:) Sn(2*f,:) ];
- size(s);
- plot(s);
- axis([1 length(s) -20000 20000]);
- figure(2);
- clf;
- Wo = model(f,1);
- L = model(f,2);
- Am = model(f,3:(L+2));
- if plot_Am
- plot((1:L)*Wo*4000/pi, 20*log10(Am),";Am;r");
- end
- axis([1 4000 -10 80]);
- hold on;
- if plot_sw
- plot((0:255)*4000/256, Sw(f,:),";Sw;");
- end
-
- if (file_in_path(".",modelq_name))
- Amq = modelq(f,3:(L+2));
- if plot_Amq
- plot((1:L)*Wo*4000/pi, 20*log10(Amq),";Amq;g" );
- end
- if (file_in_path(".",pwb_name) && plot_pwb)
- plot((0:255)*4000/256, 10*log10(Pwb(f,:)),";Pwb;r");
- endif
- if (file_in_path(".",rw_name) && plot_rw)
- plot((0:255)*4000/256, 10*log10(Rw(f,:)),";Rw;b");
- endif
- if (file_in_path(".",pw_name) && plot_pw)
- plot((0:255)*4000/256, 10*log10(Pw(f,:)),";Pw;g.");
- endif
- signal = Am * Am';
- noise = (Am-Amq) * (Am-Amq)';
- snr1 = 10*log10(signal/noise);
- Am_err_label = sprintf(";Am error SNR %4.2f dB;m",snr1);
- if plot_err
- plot((1:L)*Wo*4000/pi, 20*log10(Amq) - 20*log10(Am), Am_err_label);
- end
- endif
- hold off;
- % interactive menu
- printf("\rframe: %d menu: n-next b-back p-png q-quit", f);
- fflush(stdout);
- k = kbhit();
- if (k == 'n')
- f = f + 1;
- endif
- if (k == 'b')
- f = f - 1;
- endif
- % optional print to PNG
- if (k == 'p')
- figure(1);
- pngname = sprintf("%s_%d_sn.png",samname,f);
- print(pngname, '-dpng', "-S500,500")
- pngname = sprintf("%s_%d_sn_large.png",samname,f);
- print(pngname, '-dpng', "-S800,600")
- figure(2);
- pngname = sprintf("%s_%d_sw.png",samname,f);
- print(pngname, '-dpng', "-S500,500")
- pngname = sprintf("%s_%d_sw_large.png",samname,f);
- print(pngname, '-dpng', "-S1200,800")
- endif
- until (k == 'q')
- printf("\n");
- endfunction
|