📄 condor_plot.m
字号:
%%function [ber_sim,per_sim,snr_dB] = condor_plot(varargin)%%old_style = 0;if nargin == 0 basedir = 'results';elseif nargin == 1 basedir = varargin{1};elseif nargin == 2 basedir = varargin{1}; old_style = varargin{2};endcmd = strcat('grep RSCODE', ... sprintf(' %s/CONFIG.txt',basedir), ... ' | sed -e "s/^[$|@]RSCODE.*= //" -e "s/;//"');[s,w]=system(cmd);RSCODE = str2num(w);if isempty(RSCODE) fprintf('No RSCODE\n'); DATALENGTH = 1016;elseif RSCODE == 0 fprintf('No RSCODE\n'); DATALENGTH = 870;elseif RSCODE == 1 fprintf('RSCODE is defined\n'); DATALENGTH = 1016;endcmd = strcat('grep "^[@|$]snr_dB"', ... sprintf(' %s/CONFIG.txt',basedir), ... ' | sed -e "s/^[$|@]snr_dB = (//" -e "s/);//"');[s,w]=system(cmd);snr_dB = str2num(w);cmd = strcat('grep "^[@|$]BURST_LENGTH"', ... sprintf(' %s/CONFIG.txt', basedir), ... ' | sed -r -e "s/[$|@]BURST_LENGTH = \(?//" -e "s/\)?;//"');[s,w]=system(cmd);BURST_LENGTH = str2num(w);cmd = strcat('grep "^[@|$]Nu"', ... sprintf(' %s/CONFIG.txt', basedir), ... ' | sed -r -e "s/[$|@]Nu = \(?//" -e "s/\)?;//"');[s,w]=system(cmd);Nu = str2num(w);cmd = strcat('grep "^[@|$]LAMBDA"', ... sprintf(' %s/CONFIG.txt', basedir), ... ' | sed -r -e "s/[$|@]LAMBDA = \(?//" -e "s/\)?;//"');[s,w]=system(cmd);LAMBDA = str2num(w);cmd = strcat('grep "^[@|$]channel_est"', ... sprintf(' %s/CONFIG.txt', basedir), ... ' | sed -r -e "s/[$|@]channel_est = \(?//" -e "s/\)?;//"');[s,w]=system(cmd);channel_est = str2num(w);fprintf('Parameters:\n')fprintf('BURST_LENGTH = %d, Nu = %d, LAMBDA = %d\n',BURST_LENGTH,Nu,LAMBDA);if isempty(RSCODE) || RSCODE == 0 fprintf('Uncoded simulation\n'); code_str = 'Uncoded,';elseif RSCODE == 1 fprintf('Simulation with RS code\n'); code_str = 'RS code,';endif isempty(channel_est) || channel_est == 0 fprintf('No channel estimation\n'); chan_str = ' ';elseif channel_est == 1 fprintf('Channel estimation\n'); chan_str = ' channel mask,';endfor k = 1:1:length(snr_dB) if old_style == 1 filename = sprintf('result-%d-%d-%d-%d.txt',... snr_dB(k),BURST_LENGTH,Nu,LAMBDA); else filename = sprintf('result-%d-%d-%d-%d-%d.txt',... snr_dB(k),BURST_LENGTH,RSCODE,Nu,LAMBDA); end data = load(strcat(basedir,'/',filename)); ber_sim(k) = mean(data(:,2)/DATALENGTH); pe_idx = find(data(:,2)>0); pc_idx = find(data(:,2)==0); data(pe_idx,2) = 1; per_sim(k) = mean(data(:,2)); channel_mask_length(k) = mean(data(:,6)); channel_mask_length_pe(k) = mean(data(pe_idx,6)); channel_mask_length_pc(k) = mean(data(pc_idx,6));endfigure(1);h1=semilogy(snr_dB,ber_sim,'.--');hold on;% Packet error rateh2=semilogy(snr_dB,per_sim,'m*--');% What is the performance of an AWGN channel with BPPM and a matched filtersnr = 10.^(snr_dB/10);ber_bppm = 0.5*erfc( sqrt(snr) / sqrt(2));h3=semilogy(snr_dB,ber_bppm,'r');hold off;grid on;legend([h2 h1 h3], ... 'PER, simulation', ... 'BER, simulation ', ... 'BER of BPPM on AWGN', ... 'Location','SouthWest');xlabel('SNR [dB]');param_str = sprintf(' Nu = %d, LAMBDA = %.1f [pkt/s]',Nu,LAMBDA);title_str = strcat(code_str,chan_str,param_str);title(title_str);%axis([snr_dB(1) snr_dB(end) 1e-6 1]);figure(2);bar(snr_dB,[channel_mask_length_pc' channel_mask_length_pe']);fprintf('Non-zero channel mask slots\n');fprintf('Correct packets: [');fprintf('%.2f ',channel_mask_length_pc);fprintf(']\n');fprintf('Erroneous packets: [')fprintf('%.2f ',channel_mask_length_pe);fprintf(']\n');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -