--- /dev/null
+% Copyright David Rowe 2009
+% This program is distributed under the terms of the GNU General Public License
+% Version 2
+%
+% Plot NLP states from dump files.
+
+function plnlp(samname, f)
+
+ sn_name = strcat(samname,"_sn.txt");
+ Sn = load(sn_name);
+
+ sw_name = strcat(samname,"_sw.txt");
+ Sw = load(sw_name);
+
+ fw_name = strcat(samname,"_fw.txt");
+ if (file_in_path(".",fw_name))
+ fw = load(fw_name);
+ endif
+
+ e_name = strcat(samname,"_e.txt");
+ if (file_in_path(".",e_name))
+ e = load(e_name);
+ endif
+
+ p_name = strcat(samname,".p");
+ if (file_in_path(".",p_name))
+ p = load(p_name);
+ endif
+
+ sq_name = strcat(samname,"_sq.txt");
+ if (file_in_path(".",sq_name))
+ sq = load(sq_name);
+ endif
+
+ dec_name = strcat(samname,"_dec.txt");
+ if (file_in_path(".",dec_name))
+ dec = load(dec_name);
+ endif
+
+ do
+ figure(1);
+ clg;
+ s = [ Sn(2*f-1,:) Sn(2*f,:) ];
+ plot(s, ";Sn;");
+ grid
+ axis([1 length(s) -20000 20000]);
+
+ figure(2);
+ plot((0:255)*4000/256, Sw(f,:),";Sw;");
+ grid
+ axis([1 4000 -10 80]);
+ hold on;
+
+ f0 = 8000/p(f);
+ Wo = 2*pi/p(f);
+ L = floor(pi/Wo);
+ f0_label = sprintf("b;P=%3.1f F0=%3.0f;",p(f),f0);
+ for m=1:L-1
+ plot([ m*Wo*4000/pi m*Wo*4000/pi], [10 60], 'b');
+ endfor
+ plot([ L*Wo*4000/pi L*Wo*4000/pi], [10 60], f0_label);
+
+ hold off;
+
+ if (file_in_path(".",fw_name))
+ figure(3);
+ if (file_in_path(".",e_name))
+ subplot(211);
+ endif
+ plot((0:255)*800/256, fw(f,:)/max(fw(f,:)), ";Fw;");
+ axis([1 400 0 1]);
+ if (file_in_path(".",e_name))
+ subplot(212);
+ e_concat = [ e(2*f-1,:) e(2*f,:) ];
+ plot(e_concat(1:400)/max(e_concat(1:400)), "+;MBE E(f);");
+ axis([1 400 0 1]);
+ endif
+ endif
+
+ if (file_in_path(".",sq_name))
+ figure(4);
+ sq_concat = [ sq(2*f-1,:) sq(2*f,:) ];
+ axis
+ plot(sq_concat, ";sq;");
+ endif
+
+ if (file_in_path(".",dec_name))
+ figure(5);
+ plot(dec(f,:), ";dec;");
+ endif
+
+ figure(2);
+
+ % 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')
+
+ pngname = sprintf("%s_%d",samname,f);
+
+ % small image
+
+ __gnuplot_set__ terminal png size 420,300
+ ss = sprintf("__gnuplot_set__ output \"%s.png\"", pngname);
+ eval(ss)
+ replot;
+
+ % larger image
+
+ __gnuplot_set__ terminal png size 800,600
+ ss = sprintf("__gnuplot_set__ output \"%s_large.png\"", pngname);
+ eval(ss)
+ replot;
+
+ % for some reason I need this to stop large plot getting wiped
+ __gnuplot_set__ output "/dev/null"
+
+ endif
+
+ until (k == 'q')
+ printf("\n");
+
+endfunction