1.软件版本

MATLAB2019a

2.本算法理论知识

在传统的多址接入方式中,常用的技术是FDM,即频分多址技术。其主要功能就是将整个带宽分为多个频率互不重叠的子信道,然后单独对每个信号进行独立的调制。这种技术的特点是频率上的互不重叠从而防止了信道间干扰,但这降低了频谱利用率,浪费了大量的带宽资源。针对这个问题,为了提高频谱的利用率,可以考虑将频谱进行重叠,但是为了防止互相干扰,必须让每个子信道之间是正交的。从而发展处了OFDM技术,这就是多载波调制技术,即OFDM技术。

在OFDM中,整个带宽被分为N个正交子载波,每一个子载波的数据传输波特率为1/Ts,此外,相邻两个子载波之间的中心频率间隔也为1/Ts,这就实现了子载波的正交性要求。同时,使用OFDM技术,其是将N个子载波进行同时传输,即并行传输的,这样就能降低每个子载波的传输速率。所以OFDM技术可以将高速率传输变为N个低速率传输。这样还大大降低了系统接收机的实现复杂性。此外,OFDM技术也是多载波CDMA技术的基础,因此,在这里首先介绍OFDM技术。

OFDM技术在接收端进行和发送相反的操作,将接收到的OFDM信号通过FFT傅里叶变换将其变为为频域信号,子载波的幅度和相位被采集出来并转换回数字信号。完整的OFDM系统的物理结构框图如图2.2所示:

多载波CDMA技术的发送和接收原理框图如下所示:

图2 多载波CDMA发送框图

图3 多载波CDMA接收框图

3.部分核心代码

function ber=MRC(snr)
Nt = 1;
Nr = 1;
p  = 1;
no_bit_sym  = 1;
no_it_x_SNR = 10000;
tot_err_m1  = 0;for i=1:no_it_x_SNRX=(2*round(rand(Nt,1))-1);H=Cor_H(Nr,Nt,p);sig=sqrt(0.5/(10^(snr/10)));n=sig*(randn(Nr,Nt)+j*randn(Nr,Nt));R=H*X+n;s0=0;for n=1:Nrs0=conj(H(n,1))*R(n,1)+s0;endif(real(s0)>0)decoded=1;elsedecoded=-1;enderr_m1=sum(round(X')~=round(decoded));tot_err_m1=err_m1+tot_err_m1;end
ber=tot_err_m1/(no_it_x_SNR);

function ber = mc_cdma(snr,num_user,num_data)N = 512;           % number of symbols in a single OFDM symbol
GI = 80;           % guard interval
Mt = 1;             % number of Tx antennas
Mr = 1;             % number of Rx antennas
M = 8;              % max constellation bit number
num_subc = 8;        % number of subcarriersmod_level = 2;
spreadLength=8;% snr=0;
en = 10^(snr/10);
sigma = 1/sqrt(2*en);cSpread=[1 1 1 1 1 1 1 1;1 -1 1 -1 1 -1 1 -1;...1 1 -1 -1 1 1 -1 -1;1 -1 -1 1 1 -1 -1 1;...1 1 1 1 -1 -1 -1 -1;1 -1 1 -1 -1 1 -1 1;...1 1 -1 -1 -1 -1 1 1;1 -1 -1 1 -1 1 1 -1];multipath = [sqrt(0.1897)  0  sqrt(0.3785) 0 0 sqrt(0.2388) 0 0 0  0 sqrt(0.0951) 0 0 0 0 sqrt(0.06) 0 0 0 0 0 0 sqrt(0.0379)]; %% power
multipath_channel0 = zeros(1,length(multipath));signal_tx = zeros(num_data*spreadLength/N,N + GI);for loop_user=1:num_usermsg    = rand(num_data,1)>=0.5;code1  = [];trel   = poly2trellis(6,[53 75]);code1  = [code1 convenc(msg,trel)];code   = code1';if loop_user == 1msg_user1 = msg;code_user1 = code1;endnum_data1   = 2*num_data;[iout,qout] = qpsk(code,1,num_data1,mod_level);inputData   = iout+i*qout;    %???[S]         = mc_spreading(inputData,1,num_data,cSpread(loop_user,:),spreadLength);for m=1:num_data*spreadLength/Nofdm_symbol((m-1)*(N+GI)+1:m*(N+GI)) = ifft_cp_tx_blk(S((m-1)*N+1:m*N),N,GI)*sqrt(N);endfor p = 1:(num_data*spreadLength/N)  multipath_channel(p,:) = multipath.*(randn(1,length(multipath_channel0))+j*randn(1,length(multipath_channel0)))*sqrt(0.5);if loop_user==1multipath_channel_user1(p,:) = multipath_channel(p,:);endsignal_tx_p         = filter(multipath_channel(p,:),[1],ofdm_symbol((N+GI)*(p-1)+1:(N+GI)*p));% passing through the multipath channelsignal_tx_loop(p,:) = signal_tx_p;endsignal_tx           = signal_tx + signal_tx_loop;
endnoise     = sigma*(randn(num_data*spreadLength/N,N+GI) + j*randn(num_data*spreadLength/N,N+GI));
signal_rx = signal_tx + noise; y2 = [];
for q =1:(num_data*spreadLength/N)rec_symbol   = [];rec_symbol   = [rec_symbol; fft_cp_rx_blk(signal_rx(q,:),N,GI)/sqrt(N)];rec_symbol2  = reshape(rec_symbol,Mt*N,1);h   = [multipath_channel_user1(q,:),zeros(1,N+GI-length(multipath))];Hf1 = fft(h,N);for n = 1:N/spreadLengthy1=0;for m = 1:spreadLengthy1 = y1 + cSpread(1,m)*conj(Hf1((n-1)*spreadLength+m))*rec_symbol2((n-1)*spreadLength+m);endtemp(n) = y1;endy2 = [y2,temp];
endy          =  reshape(y2,1,num_data);
idata      =  real(y);
qdata      =  imag(y);
y_demod    =  deqpsk(idata,qdata,1,num_data,mod_level);
y_demod    =  y_demod';
tblen      =  10;
decoded1   =  vitdec(y_demod,trel,tblen,'cont','hard');
[n1,r1]    =  biterr(decoded1(tblen+1:end),msg_user1(1:end-tblen,1));
ber        =  r1;

4.仿真结论

图.7 三种方式的误码率对比

通过上面的讨论分析,这里采用MMSE方式作为单用户检测方式。由此说明,在相同SNR的条件下,MMSE具有较好的性能,因此,在进行单用户检测的时候,采用MMSE均衡算法。

5.参考文献

[1]Wenfeng Lin,Chen He.A low-complexity receiver for iterative parallel interference cancellation and decoding in MIMO–OFDM systems.AEU-International Journal of Electronics and Comm- unications, 2008,62(1,2):68-71.

[2]Merahi Bouziani,Ali Djebbari,Ahmed B.Djebbar,Mohammed F.Belbachir,Jean M.Rouvaen. MC-CDMA with exponential power profile in Nakagami fading channel.AEU-International Journal of Electronics and Communications,2005,59(6):359-361.

[3]Jinfang Zhang,Jon W.Mark,Xuemin(Sherman)Shen.An adaptive handoff priority scheme for wireless MC-CDMA cellular networks supporting real-time multimedia applications.Computer Communications,2005,28(10):1240-1250.

A01-34

【多载波系统】基于多载波系统分析等比合并EGC,最大比合并MRC,正交恢复合并ORC以及最小均方误差合并MMSE的matlab仿真相关推荐

  1. (各种均衡算法在MIMO中的应用对比试验)最小均方误差(MMSE)原理推导以及在MIMO系统中对性能的改善。

    文档和程序地址:下载地址 各种均衡算法在MIMO中的应用对比试验,内附原理推导,对比实验说明和结果等.包括MMSE,ZF,ZF-SIC等.代码附有原理推导小论文.仅供参考

  2. 单载波频域均衡matlab仿真,包括卷积编码维特比译码,矩阵交织,QPSK调制解调,导频插入,MMSE-FDE频域均衡

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 频域均衡是从校正系统的频率特性出发,利用一个可调滤波器的频率的频率特性去补偿信道或系统的频率特性,使 ...

  3. 基于LS最小二乘法的OFDM信道估计误码率matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 ofdm基本结构如下所示: 信道估计是使用接收信号表现出来的各种状态来对信道的特性进行估计的过程.信 ...

  4. pid控制器matlab仿真研究,基于MATLAB仿真的PID控制器设计毕业设计

    基于MATLAB仿真的PID控制器设计毕业设计 基于 MATLAB 仿真的 PID 控制器设计 摘 要 本论文以温度控制系统为研究对象设计一个 PID 控制器.PID 控制是迄今为止最通用的控制方法, ...

  5. 制导炸弹毕业设计怎么用matlab仿真,基于MATLAB的自动控制系统仿真-本科毕业设计.doc...

    摘要 自动控制原理理论性强,现实模型在实验室较难建立,因此利用SIMULINK进行仿真实验,可以加深我们学生对课程的理解,调动我们学习的积极性,同时大大提高了我们深入思考问题的能力和创新能力.本文针对 ...

  6. 基于汉明软译码和球型译码的通信链路误码率matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 MIMO检测是简单假设检验中的经典问题[1]. 最大似然(ML)检测器涉及穷举搜索,并且在最小误差联 ...

  7. 基于预留子载波的PAPR抑制算法matlab仿真

    目录 1.算法概述 2.仿真效果 3.matlab仿真源码 1.算法概述 峰值平均功率比(PAPR-Peak to Average Power Ratio),简称峰均比(PAPR).MIMO-OFDM ...

  8. 对比不同子载波数量下的OFDM和FBMC频谱matlab仿真

    目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...

  9. 基于matlab蓝牙跳频系统,基于Matlab软件的蓝牙跳频改进算法

    60 基于Matlab软件的蓝牙跳频改进算法 [毛淑华 岩淑霞 雷伯录] 介绍了蓝牙跳频系统对跳频序列的要求,并且提出了一种改进的自适应跳频方案.基于C语言和MATLAB工具对原跳频系统和改进后系统分 ...

最新文章

  1. 浏览器刷新再次升级!不同浏览器窗口
  2. 摹客iDoc Sketch插件全新改版!
  3. CPU调度(CPU Scheduling)
  4. ADF_ManagedBean的概念和管理(概念)
  5. 数字锁相环的matlab仿真
  6. 动画 java_Java动画程序介绍
  7. HDU - 5667 Sequence(矩阵快速幂+费马小定理降幂)
  8. C++ class实现顺序栈(完整代码)
  9. python--综合小案例--文件读取以及梳理
  10. C语言-字符数组和字符串
  11. boost库BOOST_FOREACH使用说明
  12. 布朗大学计算机专业怎么样,Offer捷报 | 恭喜Z同学收获布朗大学计算机科学专业Offer!...
  13. python烟花代码
  14. UI自动化测试之iframe切换
  15. 六轴机器人轨迹规划之matlab画直线
  16. wso2 mysql_WSO2 DAS使用mysql集群APIM
  17. Excel小问题 - 前三个非空单元格数值之和
  18. linux下显示隐藏文件
  19. JS实现30分钟倒计时
  20. uni-app(微信小程序)连接HC系列蓝牙模块并进行双向通信采坑总结

热门文章

  1. 火焰特性识别的Matlab实现方法
  2. 度度熊学队列(双端队列练习)
  3. Linux 系统支持blacklist的kernel版本加载上海域格 CLM920 NC2 mdg 模块的驱动示例
  4. [GYCTF2020]Blacklist 1
  5. 杭州市拥北发展是否是最优解,拥江发展处于何种地位
  6. 别害羞,开源社区真的很需要你,教你如何参与开源社区~
  7. 开源社区Github在2022年06月09日公测了三个新的成就徽章
  8. 剑指 Offer 11. 旋转数组的最小数字
  9. 假如ACMer有技能,你会选择哪个职业..
  10. 前端国际化如何对中文——>英文自动化翻译小demo