h = zeros(4,1)
h(1) = semilogy ...
h(2) = semilogy ...
.
.
.
legend(h, {'理论值','未编码','(2,1,3)卷积码','卷积交织级联码','循环等差交织级联码'})
你这个是在写function [p]=smldPe54(snr_in_dB),你要运行仿真,需要再写一个M文件,SNRindB1=0:1:15 %信噪比取值向量,dB为单位
SNRindB2=0:0.1:15
%******** 对给定信噪比的通信系统估计误码率 *********
for i=1:length(SNRindB1),
smld_err_prb(i)=smldPe54(SNRindB1(i)) %仿真误码率
echo off
end
echo on
%******** 对于给定信噪比的通信系统,计算的理论值******
for i=1:length(SNRindB2),
SNR=exp(SNRindB2(i)*log(10)/10) %计算信噪比
theo_err_prb(i)=Qfunct(sqrt(SNR)) %计算误码率的理论值
echo off
end
%信噪比与误码率的关系曲线图:估计值和理论值的对比图
echo on
semilogy(SNRindB1,smld_err_prb,'*')
hold on
semilogy(SNRindB2,theo_err_prb,'-')
axis([0 15 0.00001 1])
xlabel('信噪比snr')
ylabel('误码率Pe')
legend('理论值','估计值')
fprintf('SNR= %d ,System Error Rate = %d\n',SNRindB1,smld_err_prb)
这个M文件运行的时候需要用到你上面写的这部分,运行的结果就是蒙特卡洛仿真误码率和理论值的对比图。另外,你还需要写Q函数的定义,gnguass函数
首先semilogy只是在画图的时候对纵坐标取10为底的对数,通常是因为纵坐标的变化范围比较大,才进行这样的处理;
其次如果想要了解semilogy更多功能,可以在命令窗口,输入help semilogy
3.最后我对于你的问题的理解是我以为是已知原来的一个点为(x1,y1)=(1,10),那么使用semilogy画图后,这个点的坐标(x1',y1')=(x1, log(y1))=(1,1).
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)