test_ber_zhang.m
上传用户:hnyfjx
上传日期:2013-06-30
资源大小:2149k
文件大小:2k
源码类别:

传真(Fax)编程

开发平台:

Matlab

  1. %****************************************************************
  2. % 内容概述:生成随机的输入信号
  3. % 创 建 人:朱殿荣/QQ:235347/MSN:njzdr@msn.com
  4. % 单    位:南京邮电大学,通信工程系
  5. % 创建时间:2005年7月24日
  6. % 修改时间:
  7. % 参考文献:
  8. % 版权声明:任何人均可复制、传播、修改此文件,同时需保留原始版权信息。
  9. %****************************************************************
  10. clear;
  11. clc;
  12. snr=0:0.5:3;                              %snr的采样点
  13. num_frame=40*round(2.^(snr+1));         %测试的帧数;
  14. num_block_size=1000;                    %测试的块尺寸,指包含尾比特的软输入系统系列长度
  15. err_counter(1:length(snr))=0;
  16. guage=0;
  17. counter_guage=0;
  18. for num_it=2:2:6
  19.     for ii=1:length(snr)
  20.         guage=guage+num_frame(ii);
  21.     end
  22. end
  23. for num_it=2:2:6
  24.     for ii=1:length(snr)
  25.         for frame=1:num_frame(ii)
  26.             counter_guage=counter_guage+1;
  27.             fprintf('总帧数:%6.0f;完成帧数:%6.0f;当前snr点总帧数:%4.0f;当前snr点完成帧数:%4.0f;计算进度:%2.1f%% n',...
  28.                 guage,counter_guage,num_frame(ii),frame,counter_guage*100/guage);
  29.             random_in=round(rand(1,num_block_size-3));
  30.             [turbod_out,alphain]=turbo(random_in);
  31.             soft_in=awgn(turbod_out,snr(ii),'measured');
  32.             [hard_out,soft_out]=deturbo_zhang(soft_in,alphain,num_it);
  33.             err_counter(ii)=err_counter(ii)+...
  34.             length(find(hard_out(1:num_block_size-3)~=random_in));
  35.         end
  36.         ber(ii)=err_counter(ii)/((num_block_size-3)*num_frame(ii));
  37.         %fprintf('信噪比:%4d ;误码率:%4d n',snr,ber(ii));
  38.     end
  39.     ber_ok(num_it/2,1:length(snr))=ber;
  40. end
  41. semilogy(snr,ber_ok(1,:),snr,ber_ok(2,:),snr,ber_ok(3,:));
  42. xlabel('SNR(dB)');
  43. ylabel('BER');
  44. title('3GPP标准 max-log-map译码算法 译码性能图');
  45. legend('2次迭代','4次迭代','6次迭代');
  46. save cap算法01.mat snr ber_ok soft_out;
  47. clock
  48. %plot(snr,ber);
  49. %counter_ber
  50. %soft_in(1,1:10);
  51. %hard_out(1:10);
  52. %soft_out(1:10);
  53. %--------------------------
  54. %soft_in2(1,:)=soft_in(1,alphain);
  55. %soft_in2(2,:)=soft_in(3,:);
  56. %soft_out=decoder_3GPP_MAX_new(soft_in2);
  57. %soft_out(alphain)=soft_out;
  58. %----------------------------
  59. %soft_out=decoder_3GPP_MAX_new(soft_in);
  60. %for ii=1:num_block_size
  61. %    if soft_out(ii)>0
  62. %        hard_out(ii)=1;
  63. %    else
  64. %        hard_out(ii)=-1;
  65. %    end
  66. %end
  67. %----------------------------