📄 cmlplot.m
字号:
hold off;
end
% Plot the FER of coded and outage simulations
if ( sum( sum( sim_types(4:5,:) ) ) )
% First plot FER vs. Eb/No
fig_number = fig_number + 1;
figure( fig_number );
% Outage Probability
for (i=find( sim_types(5,:) == 1 ) )
% If stored as Es/No, convert to Eb/No
if ( sim_param(i).SNR_type(2) == 'b' )
% This is Eb/No
EbNodB = sim_param(i).SNR;
else
% This is stored as Es/No
EsNodB = sim_param(i).SNR;
% Convert to Eb/No
EsNo = 10.^(EsNodB/10);
EbNo = EsNo./sim_param(i).rate;
EbNodB = 10*log10(EbNo);
end
% Plot FER versus Eb/No in dB
figure( fig_number );
semilogy( EbNodB, sim_state(i).FER, sim_param(i).linetype );
hold on;
end
% FER of coded modulation
for (i=find( sim_types(4,:) == 1 ) )
% If stored as Es/No, convert to Eb/No
if ( sim_param(i).SNR_type(2) == 'b' )
% This is Eb/No
EbNodB = sim_param(i).SNR;
else
% This is stored as Es/No
EsNodB = sim_param(i).SNR;
% Convert to Eb/No
EsNo = 10.^(EsNodB/10);
EbNo = EsNo./sim_param(i).rate;
EbNodB = 10*log10(EbNo);
end
% only plot the last iteration
if ( length( sim_param(i).max_iterations ) )
max_iter = sim_param(i).max_iterations;
else
max_iter = 1;
end
% Plot FER versus Eb/No in dB
figure( fig_number );
semilogy( EbNodB, sim_state(i).FER( max_iter, : ), sim_param(i).linetype );
hold on;
end
figure( fig_number );
legend( sim_param( find( sim_types(5,:) == 1 ) ).legend, sim_param( find( sim_types(4,:) == 1 ) ).legend, 0 );
xlabel( 'Eb/No in dB' );
ylabel( 'FER' );
% Now plot the other iterations
for (i=find( sim_types(4,:) == 1 ) )
if ( length( sim_param(i).plot_iterations ) )
% make sure that we get both Es/No and Eb/No
if ( sim_param(i).SNR_type(2) == 'b' )
% This is Eb/No
EbNodB = sim_param(i).SNR;
else
% This is stored as Es/No
EsNodB = sim_param(i).SNR;
% Convert to Eb/No
EsNo = 10.^(EsNodB/10);
EbNo = EsNo./sim_param(i).rate;
EbNodB = 10*log10(EbNo);
end
% plot the other iterations
figure( fig_number );
semilogy( EbNodB, sim_state(i).FER(sim_param(i).plot_iterations,:), sim_param(i).linetype );
end
end
figure( fig_number );
hold off;
% plot FER vs. Es/No
fig_number = fig_number + 1;
figure( fig_number );
% Outage Probability
for (i=find( sim_types(5,:) == 1 ) )
% If stored as Eb/No, convert to Es/No
if ( sim_param(i).SNR_type(2) == 'b' )
% This is Eb/No
EbNodB = sim_param(i).SNR;
% Convert to Es/No
EbNo = 10.^(EbNodB/10);
EsNo = sim_param(i).rate*EbNo;
EsNodB = 10*log10(EsNo);
else
% This is Es/No
EsNodB = sim_param(i).SNR;
end
% Plot FER versus Es/No in dB
figure( fig_number );
semilogy( EsNodB, sim_state(i).FER, sim_param(i).linetype );
hold on;
end
% FER of coded modulation
for (i=find( sim_types(4,:) == 1 ) )
% If stored as Eb/No, convert to Es/No
if ( sim_param(i).SNR_type(2) == 'b' )
% This is Eb/No
EbNodB = sim_param(i).SNR;
% Convert to Es/No
EbNo = 10.^(EbNodB/10);
EsNo = sim_param(i).rate*EbNo;
EsNodB = 10*log10(EsNo);
else
% This is Es/No
EsNodB = sim_param(i).SNR;
end
% only plot the last iteration
if ( length( sim_param(i).max_iterations ) )
max_iter = sim_param(i).max_iterations;
else
max_iter = 1;
end
% Plot FER versus Es/No in dB
figure( fig_number );
semilogy( EsNodB, sim_state(i).FER( max_iter, : ), sim_param(i).linetype );
hold on;
end
figure( fig_number );
legend( sim_param( find( sim_types(5,:) == 1 ) ).legend, sim_param( find( sim_types(4,:) == 1 ) ).legend, 0 );
xlabel( 'Es/No in dB' );
ylabel( 'FER' );
% Now plot the other iterations
for (i=find( sim_types(4,:) == 1 ) )
if ( length( sim_param(i).plot_iterations ) )
% If stored as Eb/No, convert to Es/No
if ( sim_param(i).SNR_type(2) == 'b' )
% This is Eb/No
EbNodB = sim_param(i).SNR;
% Convert to Es/No
EbNo = 10.^(EbNodB/10);
EsNo = sim_param(i).rate*EbNo;
EsNodB = 10*log10(EsNo);
else
% This is Es/No
EsNodB = sim_param(i).SNR;
end
% plot the other iterations
figure( fig_number );
semilogy( EsNodB, sim_state(i).FER(sim_param(i).plot_iterations,:), sim_param(i).linetype );
end
end
figure( fig_number );
hold off;
end
% plot throughput vs. Es/No, if there are any throughput curves requested
if ( sum( sim_types(6,:) ) )
fig_number = fig_number + 1;
figure( fig_number );
% plot throughput vs. Es/No
for (i=find( sim_types(6,:) == 1 ) )
plot( sim_param(i).SNR, sim_state(i).throughput, sim_param(i).linetype );
hold on;
end
legend( sim_param( find( sim_types(6,:) == 1 ) ).legend, 2 );
xlabel( 'Es/No in dB' );
ylabel( 'Normalized throughput' );
hold off;
end
% plot min Eb/No vs. h for nonorthogonal FSK under BW constraints.
if ( sum( sim_types(7,:) ) )
fig_number = fig_number + 1;
figure( fig_number );
% plot min Eb/No vs. h
for (i=find( sim_types(7,:) == 1 ) )
[Y,I] = sort( sim_param(i).h );
plot( sim_param(i).h(I), sim_state(i).min_EbNodB(I), sim_param(i).linetype );
hold on;
end
legend( sim_param( find( sim_types(7,:) == 1 ) ).legend, 2 );
xlabel( 'h' );
ylabel( 'min Eb/No (in dB)' );
hold off;
fig_number = fig_number + 1;
figure( fig_number );
% plot min Eb/No vs. rate
for (i=find( sim_types(7,:) == 1 ) )
[Y,I] = sort( sim_state(i).best_rate );
plot( sim_state(i).best_rate(I), sim_state(i).min_EbNodB(I), sim_param(i).linetype );
hold on;
end
legend( sim_param( find( sim_types(7,:) == 1 ) ).legend, 2 );
xlabel( 'code rate r' );
ylabel( 'min Eb/No (in dB)' );
hold off;
end
% plot min Eb/No vs. B for nonorthogonal FSK under BW constraint B.
if ( sum( sim_types(8,:) ) )
fig_number = fig_number + 1;
figure( fig_number );
% plot min Eb/No vs. B
for (i=find( sim_types(8,:) == 1 ) )
[Y,I] = sort( sim_param(i).bwconstraint );
plot( sim_param(i).bwconstraint(I), sim_state(i).min_EbNodB(I), sim_param(i).linetype );
hold on;
end
legend( sim_param( find( sim_types(8,:) == 1 ) ).legend, 2 );
xlabel( 'Bandwidth B' );
ylabel( 'min Eb/No (in dB)' );
hold off;
fig_number = fig_number + 1;
figure( fig_number );
% plot eta vs. min Eb/No
for (i=find( sim_types(8,:) == 1 ) )
[Y,I] = sort( sim_param(i).bwconstraint );
% plot( sim_state(i).min_EbNodB(I), 1./sim_param(i).bwconstraint(I), sim_param(i).linetype );
plot( 1./sim_param(i).bwconstraint(I), sim_state(i).min_EbNodB(I), sim_param(i).linetype );
hold on;
end
legend( sim_param( find( sim_types(8,:) == 1 ) ).legend, 2 );
% ylabel( '\eta' );
% xlabel( 'minimum Eb/No in dB' );
xlabel( '\eta in bps/Hz' );
ylabel( 'Minimum Eb/No in dB' );
hold off;
fig_number = fig_number + 1;
figure( fig_number );
% plot optimal h vs. B
for (i=find( sim_types(8,:) == 1 ) )
[Y,I] = sort( sim_param(i).bwconstraint );
plot( sim_param(i).bwconstraint(I), sim_param(i).h(I), sim_param(i).linetype );
hold on;
end
legend( sim_param( find( sim_types(8,:) == 1 ) ).legend, 2 );
xlabel( 'Bandwidth B' );
ylabel( 'optimal h' );
hold off;
fig_number = fig_number + 1;
figure( fig_number );
% plot optimal rate vs. B
for (i=find( sim_types(8,:) == 1 ) )
[Y,I] = sort( sim_param(i).bwconstraint );
plot( sim_param(i).bwconstraint(I), sim_state(i).best_rate(I), sim_param(i).linetype );
hold on;
end
legend( sim_param( find( sim_types(8,:) == 1 ) ).legend, 2 );
xlabel( 'Bandwidth B' );
ylabel( 'optimal rate' );
hold off;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -