diff options
| author | Marin Ivanov <[email protected]> | 2025-07-25 10:17:14 +0300 |
|---|---|---|
| committer | Marin Ivanov <[email protected]> | 2026-01-18 20:09:26 +0200 |
| commit | 0168586485e6310c598713c911b1dec5618d61a1 (patch) | |
| tree | 6aabc2a12ef8fef70683f5389bea00f948015f77 /octave/plamp.m | |
* codec2 cut-down version 1.2.0
* Remove codebook and generation of sources
* remove c2dec c2enc binaries
* prepare for emscripten
Diffstat (limited to 'octave/plamp.m')
| -rw-r--r-- | octave/plamp.m | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/octave/plamp.m b/octave/plamp.m new file mode 100644 index 0000000..c7a1291 --- /dev/null +++ b/octave/plamp.m @@ -0,0 +1,178 @@ +% plamp.m +% Plot ampltiude modelling information from c2sim dump files. + +function plamp(samname, f, epslatex=0) + + plot_sw = 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 + + ew_name = strcat(samname,"_ew.txt"); + if (file_in_path(".",ew_name)) + Ew = load(ew_name); + endif + + E_name = strcat(samname,"_E.txt"); + if (file_in_path(".",E_name)) + E = load(E_name); + endif + + rk_name = strcat(samname,"_rk.txt"); + if (file_in_path(".",rk_name)) + Rk = load(rk_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_name = strcat(samname,"_pw.txt"); + if (file_in_path(".",pw_name)) + Pw = load(pw_name); + endif + pwb_name = strcat(samname,"_pwb.txt"); + if (file_in_path(".",pwb_name)) + Pwb = load(pwb_name); + endif + + lsp_name = strcat(samname,"_lsp.txt"); + if (file_in_path(".",lsp_name)) + lsp = load(lsp_name); + endif + + phase_name = strcat(samname,"_phase.txt"); + if (file_in_path(".",phase_name)) + phase = load(phase_name); + endif + + phase_name_ = strcat(samname,"_phase_.txt"); + if (file_in_path(".",phase_name_)) + phase_ = load(phase_name_); + endif + + snr_name = strcat(samname,"_snr.txt"); + if (file_in_path(".",snr_name)) + snr = load(snr_name); + endif + + if epslatex, [textfontsize linewidth] = set_fonts(); end + + k = ' '; + do + figure(1); clf; + clf; + s = [ Sn(2*f-1,:) Sn(2*f,:) ]; + plot(s,'b'); + axis([1 length(s) -30000 30000]); + xlabel('Time (samples)'); ylabel('Amplitude'); + + figure(2); clf; + Wo = model(f,1); + L = model(f,2); + Am = model(f,3:(L+2)); + plot((1:L)*Wo*4000/pi, 20*log10(Am),"+-r"); + axis([1 4000 -10 80]); + hold on; + if plot_sw + plot((0:255)*4000/256, Sw(f,:),"b"); + end + hold off; grid minor; + ylabel ('Amplitude (dB)'); xlabel('Frequency (Hz)'); + + figure(3); clf; + hold on; + plot((0:255)*4000/256, Sw(f,:),"b"); + plot((1:L)*Wo*4000/pi, 20*log10(Am),"+-r"); + plot((0:255)*4000/256, E(f)+10*log10(Pwb(f,:)),"g"); + plot(lsp(f,:)*4000/pi, 75,"g+"); + hold off; grid minor; + axis([1 4000 -10 80]); + ylabel ('Amplitude (dB)'); xlabel('Frequency (Hz)'); + + figure(4); clf; + hold on; + plot((0:255)*4000/256, E(f)+10*log10(Pwb(f,:)),"g"); + plot((0:255)*4000/256, 10*log10(Pw(f,:)),"r"); + hold off; grid minor; + axis([1 4000 -10 80]); + ylabel ('Amplitude (dB)'); xlabel('Frequency (Hz)'); + + % print EPS file + + if epslatex + sz = "-S300,200"; + figure(1); + fn = sprintf("%s_%d_sn.tex",samname,f); + print(fn,"-depslatex",sz); printf("\nprinting... %s\n", fn); + + % file of points to plot in sinusoidal model + fn = sprintf("%s_%d_sn.txt",samname,f); + t_length = 4; s_max = 2; s=s*s_max/max(abs(s)); + N = length(s); t = (0:N-1)*t_length/N; + s_save = [t' s']; size(s_save) + save("-ascii",fn,"s_save"); printf("printing... %s\n", fn); + + figure(2); + fn = sprintf("%s_%d_sw.tex",samname,f); + print(fn,"-depslatex",sz); printf("printing... %s\n", fn); + + figure(3); + fn = sprintf("%s_%d_lpc_lsp.tex",samname,f); + print(fn,"-depslatex",sz); printf("printing... %s\n", fn); + + figure(4); + fn = sprintf("%s_%d_lpc_pf.tex",samname,f); + print(fn,"-depslatex",sz); printf("printing... %s\n", fn); + + restore_fonts(textfontsize,linewidth); + endif + + % interactive menu + + printf("\rframe: %d menu: n-next b-back s-plot_sw q-quit", f); + fflush(stdout); + k = kbhit(); + if k == 'n'; f = f + 1; endif + if k == 'b'; f = f - 1; endif + if k == 's' + if plot_sw; plot_sw = 0; else; plot_sw = 1; end + endif + + until (k == 'q') + printf("\n"); + +endfunction + +function [textfontsize linewidth] = set_fonts(font_size=12) + textfontsize = get(0,"defaulttextfontsize"); + linewidth = get(0,"defaultlinelinewidth"); + set(0, "defaulttextfontsize", font_size); + set(0, "defaultaxesfontsize", font_size); + set(0, "defaultlinelinewidth", 0.5); +end + +function restore_fonts(textfontsize,linewidth) + set(0, "defaulttextfontsize", textfontsize); + set(0, "defaultaxesfontsize", textfontsize); + set(0, "defaultlinelinewidth", linewidth); +end + +function print_eps_restore(fn,sz,textfontsize,linewidth) + print(fn,"-depslatex",sz); + printf("printing... %s\n", fn); + restore_fonts(textfontsize,linewidth); +end + |
