diff options
| author | drowe67 <[email protected]> | 2023-12-12 09:50:48 +1030 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-12-12 09:50:48 +1030 |
| commit | 93dbb6290495ccb194759506372b72fac1b1b104 (patch) | |
| tree | c7a57ab014674259999feb3b2eba0dd004a5f664 /octave/plamp.m | |
| parent | 4f4f7304542c4c3ef49d443ae78732b0e6683a0f (diff) | |
| parent | b8e452709330c75abfab55919575966da3bb030c (diff) | |
Merge pull request #31 from drowe67/dr-codec2-doc
WP2000 - Codec 2 Algorithm Description
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 + |
