找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4110|回复: 2
收起左侧

MATLAB多天线基础例程(信噪比,系统容量,mimo-ofdm等)

[复制链接]
ID:334136 发表于 2018-5-20 12:39 | 显示全部楼层 |阅读模式
主要讲述了多天线信噪比,系统容量,mimo-ofdm等
0.png

MATLAB源程序如下:
  1. %直接序列扩频主程序代码
  2. function [ber] = dscdma(user,seq)
  3. %   user:    同时进行扩频通信的用户数
  4. %   seq:      扩频码1:M-序列  2:Gold序列  3:正交Gold序列
  5. %   ber:    该用户数下的误码率   

  6. %**************************** 初始化部分 *****************************
  7. sr   = 256000.0;                                                    % 符号速率
  8. nSymbol=10000;                                                       %每种信噪比下发送的符号数
  9. M    = 4;                                                           % 4-QAM调制
  10. br   = sr * log2(M);                                                % 比特速率
  11. graycode=[0 1 3 2];                                                 % Gray编码规则  
  12. EbNo=0:2:10;                                                        % Eb/No 变化范围                    

  13. %************************** 脉冲成形滤波器参数 **************************

  14. delay   = 10;                                                       % 升余弦滤波器时延
  15. Fs     =  8;                                                        % 滤波器过采样数
  16. rolloff   =  0.5;                                                   % 升余弦滤波器滚降因子
  17. rrcfilter = rcosine(1,Fs,'fir/sqrt',rolloff,delay);                 %设计根升余弦滤波器

  18. %********************** 扩频码产生参数 **********************

  19. % user  = user1;                                                          % 用户数

  20. stage = 3;                                                          % m序列的阶数
  21. ptap1 = [1 3];                                                      % m序列1的寄存器连接方式
  22. ptap2 = [2 3];                                                      % m序列2的寄存器连接方式
  23. regi1 = [1 1 1 ];                                                   % m序列1的寄存器初始值
  24. regi2 = [1 1 1];                                                    % m序列2的寄存器初始值

  25. %******************** 扩频码的生成 *********************

  26. switch seq
  27. case 1                                                              % M-序列
  28.     code = mseq(stage,ptap1,regi1,user);
  29. case 2                                                              % Gold 序列
  30.     m1   = mseq(stage,ptap1,regi1);
  31.     m2   = mseq(stage,ptap2,regi2);
  32.     code = goldseq(m1,m2,user);
  33. case 3                                                              % 正交 Gold 序列
  34.     m1   = mseq(stage,ptap1,regi1);
  35.     m2   = mseq(stage,ptap2,regi2);
  36.     code = [goldseq(m1,m2,user),zeros(user,1)];
  37. end
  38. code = code * 2 - 1;
  39. clen = length(code);

  40. %************************** 衰落信道参数 **************************

  41. ts   = 1 / Fs / sr/ clen;                                           % 信道采样时间间隔
  42. t=(0:nSymbol*Fs*clen-1+2*delay*Fs)*ts;                              % 每种信噪比下的符号传输时间               
  43. %fd     = 160;                                                       % 多普勒频移 [Hz]
  44. %h=rayleigh(fd,t);

  45. %**************************** 仿真开始 ****************************

  46. for indx=1:length(EbNo)
  47.     indx
  48.    
  49. %****************************** 发射端 ********************************
  50.     data = randsrc(user,nSymbol,[0 :3]) ;                           % 产生各个用户的发射数据
  51.     data1=graycode(data+1);                                         % Gray编码
  52.     data1  = qammod(data1,M);                                       % 4-QAM 调制
  53.     [out] = spread(data1,code);                                     % 扩频
  54.    
  55.     out1=rcosflt(out.',sr,Fs*sr,'filter',rrcfilter);                % 通过脉冲成形滤波器
  56.     spow = sum(abs((out1)).^2) / nSymbol;                           % 计算每个用户信号功率
  57.     if user > 1                                                     % 用户数大于1时,所有用户数据相加
  58.         out1=sum(out1.');
  59.     else
  60.         out1=out1.';
  61.     end
  62. %***************************** 通过瑞利衰落信道 ******************************

  63. %     out1=h.*out1;
  64. %******************************** 接收端 *********************************
  65.   
  66.     sigma = sqrt(0.5 * spow * sr / br * 10^(-EbNo(indx)/10));       % 根据信噪比计算高斯白噪声方差
  67.     y=[];
  68.     for ii=1:user                                                   
  69.         y(ii,:)=out1+sigma(ii).*(randn(1,length(out1))+j*randn(1,length(out1)));    % 加入高斯白噪声(AWGN)
  70. %        y(ii,:)=y(ii,:)./h;                                                         % 假设理想信道估计
  71.     end

  72.     y=rcosflt(y.',sr,Fs*sr,'Fs/filter',rrcfilter);                  % 通过脉冲成形滤波器进行滤波
  73.     y=downsample(y,Fs);                                             % 降采样
  74.     for ii=1:user
  75.         y1(:,ii)=y(2*delay+1:end-2*delay,ii);
  76.     end
  77.                                           
  78.     yd = despread(y1.',code);                                       % 数据解扩
  79.     demodata = qamdemod(yd,M);                                      % 4-QAM 解调
  80.     demodata=graycode(demodata+1);                                  % Gray编码逆映射
  81.    
  82.     [err,ber(indx)]=biterr(data,demodata,log2(M));        % 统计误比特率
  83.    
  84. end

复制代码

所有资料51hei提供下载:
程序下部.zip (95.7 KB, 下载次数: 25)
回复

使用道具 举报

ID:790013 发表于 2020-6-26 10:23 | 显示全部楼层
很想下载 可是不行
回复

使用道具 举报

ID:583882 发表于 2021-5-15 01:19 | 显示全部楼层
小白一个 感觉不错先收藏一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表