-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
put snr_curve.sh system back in from codec2-dev, curves for datac14
- Loading branch information
Showing
7 changed files
with
611 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,267 @@ | ||
% snr_curves_plot.m | ||
% | ||
% Companion script for unittest/raw_data_curves | ||
|
||
1; | ||
|
||
function state_vec = set_graphics_state_print() | ||
textfontsize = get(0,"defaulttextfontsize"); | ||
linewidth = get(0,"defaultlinelinewidth"); | ||
markersize = get(0, "defaultlinemarkersize"); | ||
set(0, "defaulttextfontsize", 16); | ||
set(0, "defaultaxesfontsize", 16); | ||
set(0, "defaultlinelinewidth", 1); | ||
state_vec = [textfontsize linewidth markersize]; | ||
endfunction | ||
|
||
function set_graphics_state_screen(state_vec) | ||
textfontsize = state_vec(1); | ||
linewidth = state_vec(2); | ||
markersize = state_vec(3); | ||
set(0, "defaulttextfontsize", textfontsize); | ||
set(0, "defaultaxesfontsize", textfontsize); | ||
set(0, "defaultlinelinewidth", linewidth); | ||
set(0, "defaultlinemarkersize", markersize); | ||
endfunction | ||
|
||
function [snr_ch per] = snr_scatter(source, mode, channel, colour) | ||
suffix = sprintf("_%s_%s_%s",source, mode, channel); | ||
snr = load(sprintf("snr%s.txt",suffix)); | ||
offset = load(sprintf("offset%s.txt",suffix)); | ||
snr -= offset; | ||
snr_x = []; snrest_y = []; | ||
for i=1:length(snr) | ||
fn = sprintf('snrest%s_%d.txt',suffix,i); | ||
if exist(fn,'file') == 2 | ||
snrest=load(fn); | ||
if i == length(snr) | ||
plot(snr(i)*ones(1,length(snrest)), snrest, sprintf('%s;%s %s;',colour,source,mode)); | ||
else | ||
plot(snr(i)*ones(1,length(snrest)), snrest, sprintf('%s',colour)); | ||
end | ||
snr_x = [snr_x snr(i)]; snrest_y = [snrest_y mean(snrest)]; | ||
end | ||
end | ||
plot(snr_x, snrest_y, sprintf('%s', colour)); | ||
endfunction | ||
|
||
function [snr_ch per] = per_snr(mode, colour) | ||
snrch = load(sprintf("snrch_%s.txt",mode)); | ||
snroffset = load(sprintf("snroffset_%s.txt",mode)); | ||
snrch -= snroffset; | ||
per = load(sprintf("per_%s.txt",mode)); | ||
plot(snrch, per, sprintf('%so-;%s;', colour, mode)); | ||
endfunction | ||
|
||
function snrest_snr_screen(source, channel) | ||
clf; hold on; | ||
snr_scatter(source, 'datac0', channel,'b+-') | ||
snr_scatter(source, 'datac1', channel,'g+-') | ||
snr_scatter(source, 'datac3', channel,'r+-') | ||
snr_scatter(source, 'datac4', channel,'c+-') | ||
snr_scatter(source, 'datac13', channel,'m+-') | ||
xlabel('SNR (dB)'); ylabel('SNRest (dB)'); grid('minor'); | ||
axis([-12 12 -12 12]); | ||
a = axis; | ||
plot([a(1) a(2)],[a(1) a(2)],'bk-'); | ||
hold off; grid; | ||
if strcmp(source,'ctx') | ||
title(sprintf('SNR estimate versus SNR (%s) (no compression)', channel)); | ||
else | ||
title(sprintf('SNR estimate versus SNR (%s) (with compression)', channel)); | ||
end | ||
legend('location','northwest'); | ||
endfunction | ||
|
||
function snrest_snr_print(source, channel) | ||
state_vec = set_graphics_state_print(); | ||
snrest_snr_screen(source, channel); | ||
print(sprintf("snrest_snr_%s.png", source), "-dpng", "-S1000,800"); | ||
set_graphics_state_screen(state_vec); | ||
endfunction | ||
|
||
function ber_per_v_snr(source, mode, channel, colour) | ||
suffix = sprintf("_%s_%s_%s.txt",source, mode, channel); | ||
snr = load(sprintf("snr%s",suffix)); | ||
offset = load(sprintf("offset%s",suffix)); | ||
snr -= offset; | ||
ber = load(sprintf("ber%s",suffix)) + 1E-6; | ||
per = load(sprintf("per%s",suffix)) + 1E-6; | ||
semilogy(snr, ber, sprintf('%s;%s %s ber;', colour, source, mode)); | ||
semilogy(snr, per, sprintf('%s;%s %s per;', colour, source, mode),'linewidth',3,'markersize',10); | ||
endfunction | ||
|
||
function per_v_snr(source, mode, channel, colour) | ||
suffix = sprintf("_%s_%s_%s.txt",source, mode, channel); | ||
snr = load(sprintf("snr%s",suffix)); | ||
offset = load(sprintf("offset%s",suffix)); | ||
snr -= offset; | ||
per = load(sprintf("per%s",suffix)) + 1E-6; | ||
if strcmp(channel,"awgn") | ||
semilogy(snr, per, sprintf('%s;%s %s;', colour, mode, channel)); | ||
else | ||
semilogy(snr, per, sprintf('%s;%s %s;', colour, mode, channel),'linewidth',3,'markersize',10); | ||
end | ||
endfunction | ||
|
||
function thruput_v_snr(source, mode, channel, colour) | ||
suffix = sprintf("_%s_%s_%s.txt",source, mode, channel); | ||
snr = load(sprintf("snr%s",suffix)); | ||
offset = load(sprintf("offset%s",suffix)); | ||
snr -= offset; | ||
per = load(sprintf("per%s",suffix)) + 1E-6; | ||
if strcmp(mode,"datac0") Rb=291; end; | ||
if strcmp(mode,"datac1") Rb=980; end; | ||
if strcmp(mode,"datac3") Rb=321; end; | ||
if strcmp(mode,"datac4") Rb=87; end; | ||
if strcmp(mode,"datac13") Rb=65; end; | ||
if strcmp(mode,"datac14") Rb=58; end; | ||
if strcmp(channel,"awgn") | ||
plot(snr, Rb*(1-per), sprintf('%s;%s %s;', colour, mode, channel)); | ||
else | ||
plot(snr, Rb*(1-per), sprintf('%s;%s %s;', colour, mode, channel),'linewidth',3,'markersize',10); | ||
end | ||
endfunction | ||
|
||
function octave_ch_noise_screen(channel) | ||
clf; hold on; | ||
ber_per_v_snr('oct','datac0',channel,'bo-') | ||
ber_per_v_snr('ch' ,'datac0',channel,'bx-') | ||
ber_per_v_snr('oct','datac1',channel,'go-') | ||
ber_per_v_snr('ch' ,'datac1',channel,'gx-') | ||
ber_per_v_snr('oct','datac3',channel,'ro-') | ||
ber_per_v_snr('ch' ,'datac3',channel,'rx-') | ||
xlabel('SNR (dB)'); grid; | ||
hold off; | ||
if strcmp(channel,"awgn") | ||
axis([-6 8 1E-3 1]); | ||
else | ||
axis([-2 12 1E-3 1]); | ||
end | ||
title(sprintf('Comparsion of Measuring SNR from Octave and ch tool (%s)', channel)); | ||
endfunction | ||
|
||
function octave_ch_noise_print(channel) | ||
state_vec = set_graphics_state_print(); | ||
octave_ch_noise_screen(channel); | ||
print(sprintf("octave_ch_noise_%s.png", channel), "-dpng","-S1000,800"); | ||
set_graphics_state_screen(state_vec); | ||
endfunction | ||
|
||
function octave_c_tx_screen(channel) | ||
clf; hold on; | ||
ber_per_v_snr('oct','datac0',channel,'bo-') | ||
ber_per_v_snr('ctx','datac0',channel,'bx-') | ||
ber_per_v_snr('oct','datac1',channel,'go-') | ||
ber_per_v_snr('ctx','datac1',channel,'gx-') | ||
ber_per_v_snr('oct','datac3',channel,'ro-') | ||
ber_per_v_snr('ctx','datac3',channel,'rx-') | ||
xlabel('SNR (dB)'); grid; | ||
hold off; | ||
if strcmp(channel,"awgn") | ||
axis([-6 8 1E-3 1]); | ||
else | ||
axis([-2 12 1E-3 1]); | ||
end | ||
title(sprintf('Comparsion of Octave Tx and C Tx (no compression) (%s)', channel)); | ||
endfunction | ||
|
||
function octave_c_tx_print(channel) | ||
state_vec = set_graphics_state_print(); | ||
octave_c_tx_screen(channel); | ||
print(sprintf("octave_c_tx_%s.png", channel), "-dpng","-S1000,800"); | ||
set_graphics_state_screen(state_vec); | ||
endfunction | ||
|
||
function octave_c_tx_comp_screen(channel) | ||
clf; hold on; | ||
ber_per_v_snr('oct','datac0',channel,'bo-') | ||
ber_per_v_snr('ctxc','datac0',channel,'bx-') | ||
ber_per_v_snr('oct','datac1',channel,'go-') | ||
ber_per_v_snr('ctxc','datac1',channel,'gx-') | ||
ber_per_v_snr('oct','datac3',channel,'ro-') | ||
ber_per_v_snr('ctxc','datac3',channel,'rx-') | ||
xlabel('SNR (dB)'); grid; | ||
hold off; | ||
if strcmp(channel,"awgn") | ||
axis([-6 8 1E-3 1]); | ||
else | ||
axis([-2 12 1E-3 1]); | ||
end | ||
title(sprintf('Comparsion of Octave Tx and C Tx (with compression) (%s)', channel)); | ||
endfunction | ||
|
||
function octave_c_tx_comp_print(channel) | ||
state_vec = set_graphics_state_print(); | ||
octave_c_tx_comp_screen(channel); | ||
print(sprintf("octave_c_tx_comp_%s.png", channel), "-dpng","-S1000,800"); | ||
set_graphics_state_screen(state_vec); | ||
endfunction | ||
|
||
% composite AWGN and MPP for compressed | ||
function c_tx_comp_screen | ||
clf; hold on; | ||
per_v_snr('ctxc','datac0','awgn','bo-') | ||
per_v_snr('ctxc','datac1','awgn','go-') | ||
per_v_snr('ctxc','datac3','awgn','ro-') | ||
per_v_snr('ctxc','datac4','awgn','co-') | ||
per_v_snr('ctxc','datac13','awgn','mo-') | ||
per_v_snr('ctxc','datac14','awgn','ko-') | ||
per_v_snr('ctxc','datac0','mpp','bx-') | ||
per_v_snr('ctxc','datac1','mpp','gx-') | ||
per_v_snr('ctxc','datac3','mpp','rx-') | ||
per_v_snr('ctxc','datac4','mpp','cx-') | ||
per_v_snr('ctxc','datac13','mpp','mx-') | ||
per_v_snr('ctxc','datac14','mpp','kx-') | ||
xlabel('SNR (dB)'); ylabel('PER'); grid; | ||
hold off; | ||
axis([-10 14 1E-3 1]); | ||
title('PER of C Raw Data Modes (with compression)'); | ||
endfunction | ||
|
||
function c_tx_comp_print; | ||
state_vec = set_graphics_state_print(); | ||
c_tx_comp_screen; | ||
print("c_tx_comp.png", "-dpng","-S1000,800"); | ||
set_graphics_state_screen(state_vec); | ||
endfunction | ||
|
||
function c_tx_comp_thruput_screen | ||
clf; hold on; | ||
thruput_v_snr('ctxc','datac0','awgn','bo-') | ||
thruput_v_snr('ctxc','datac1','awgn','go-') | ||
thruput_v_snr('ctxc','datac3','awgn','ro-') | ||
thruput_v_snr('ctxc','datac4','awgn','co-') | ||
thruput_v_snr('ctxc','datac13','awgn','mo-') | ||
thruput_v_snr('ctxc','datac14','awgn','ko-') | ||
thruput_v_snr('ctxc','datac0','mpp','bx-') | ||
thruput_v_snr('ctxc','datac1','mpp','gx-') | ||
thruput_v_snr('ctxc','datac3','mpp','rx-') | ||
thruput_v_snr('ctxc','datac4','mpp','cx-') | ||
thruput_v_snr('ctxc','datac13','mpp','mx-') | ||
thruput_v_snr('ctxc','datac14','mpp','kx-') | ||
xlabel('SNR (dB)'); ylabel('bits/s'); grid; | ||
hold off; | ||
axis([-10 10 0 1000]); | ||
title(' Throughput for C Tx (with compression)'); | ||
legend('location','west'); | ||
endfunction | ||
|
||
function c_tx_comp_thruput_print; | ||
state_vec = set_graphics_state_print; | ||
c_tx_comp_thruput_screen; | ||
print("c_tx_comp_thruput.png", "-dpng","-S1000,800"); | ||
set_graphics_state_screen(state_vec); | ||
endfunction | ||
|
||
#{ | ||
figure(1); octave_ch_noise_screen; | ||
figure(2); octave_c_tx_screen; | ||
figure(3); octave_c_tx_comp_screen | ||
figure(4); snrest_snr_screen; | ||
|
||
figure(5); octave_ch_noise_print; | ||
figure(6); octave_c_tx_print; | ||
figure(7); octave_c_tx_comp_print; | ||
figure(8); snrest_snr_print; | ||
#} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.