基于Alamouti 编码的 M-PSK 信号通过莱斯平坦衰落信道传输附matlab代码

本文涉及的产品
文档翻译,文档翻译 1千页
语种识别,语种识别 100万字符
文本翻译,文本翻译 100万字符
简介: 基于Alamouti 编码的 M-PSK 信号通过莱斯平坦衰落信道传输附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机 电力系统

⛄ 内容介绍

基于Alamouti 编码的 M-PSK 信号通过莱斯平坦衰落信道传输附matlab代码

⛄ 完整代码

clear all; close all; clc


snapshots = 100000;

EbNo = 0:10;

K = [4.0; 0.6];

M = [4; 8]; %Positions of modulation (M-PSK)

Mt = 2;

Mr = [1; 2];


ostbcEnc = comm.OSTBCEncoder('NumTransmitAntennas', Mt); % Alamouti


ric_ber = zeros(length(EbNo), length(M), length(K), length(Mr));

sum_BER = zeros(length(EbNo), length(M), length(K), length(Mr));



for mr = 1:length(Mr)

   ostbcComb = comm.OSTBCCombiner('NumTransmitAntennas', Mt, 'NumReceiveAntennas', Mr(mr));

   H = zeros(Mr(mr), Mt, snapshots);

   ric_msg = zeros(snapshots, Mr(mr));

   for k = 1:length(K)

       mu = sqrt( K(k)/(K(k)+1));

       s = sqrt(1/(K(k)+1));

       for m = 1:length(M)


           hModulator = comm.PSKModulator('ModulationOrder', M(m), 'BitInput', false);

           hDemod = comm.PSKDemodulator('ModulationOrder', M(m), 'BitOutput', false);

           ric_ber(:,m,k,mr) = berfading(EbNo, 'psk', M(m), Mr(mr)*Mt, K(k));


           snr = EbNo+10*log10(log2(M(m)));

           message = randi([0,M(m)-1],100000,1);


           mod_msg = step(hModulator,message);

           Es = mean(abs(mod_msg).^2);


           alam_msg = step(ostbcEnc, mod_msg);


           % Channel

           h = mu + s*(1/sqrt(2))*(randn(Mr(mr),Mt,snapshots/Mt)...

           + 1j*randn(Mr(mr),Mt, snapshots/Mt));

           H(:,:,1:2:end-1) = h;

           H(:,:,2:2:end) = h;

           pathGainself = permute(H,[3,2,1]);


           % Transmit through the channel

           for q = 1:snapshots;  

               ric_msg(q,:) = (sqrt(Es/Mt)*H(:,:,q)*alam_msg(q,:).').';

           end


           for c = 1:100

               for jj = 1:length(EbNo)

                   noisy_mod = awgn(ric_msg,snr(jj),'measured','dB');

                   decodeData = step(ostbcComb,noisy_mod,pathGainself);

                   demod_msg = step(hDemod,decodeData);

                   [number,BER(c,jj)] = biterr(message,demod_msg);

               end

           end

           sum_BER(:,m, k, mr) = sum(BER)./c;

       end

   end

end


figure(1)


semilogy(EbNo,sum_BER(:,1,1,1),'r-o',EbNo,sum_BER(:,2,1,1),'g-o',...

        EbNo,ric_ber(:,1,1,1),'r-',EbNo,ric_ber(:,2,1,1),'g-',...

        EbNo,sum_BER(:,1,1,2),'b-o',EbNo,sum_BER(:,2,1,2),'y-o',...

        EbNo,ric_ber(:,1,1,2),'b-',EbNo,ric_ber(:,2,1,2),'y-',...

        'LineWidth', 1.5)

title('Rician model (K = 4.0)')

legend('QPSK(simulated) 2x1', '8-PSK(simulated) 2x1',...

   'QPSK(theory) 2x1','8-PSK(theory) 2x1',...

   'QPSK(simulated) 2x2', '8-PSK(simulated) 2x2',...

   'QPSK(theory) 2x2','8-PSK(theory) 2x2')

xlabel('EbNo (dB)')

ylabel('BER')

grid on



figure(2)


semilogy(EbNo,sum_BER(:,1,2,1),'r-o',EbNo,sum_BER(:,2,2,1),'g-o',...

        EbNo,ric_ber(:,1,2,1),'r-',EbNo,ric_ber(:,2,2,1),'g-',...

        EbNo,sum_BER(:,1,2,2),'b-o',EbNo,sum_BER(:,2,2,2),'y-o',...

        EbNo,ric_ber(:,1,2,2),'b-',EbNo,ric_ber(:,2,2,2),'y-',...

        'LineWidth', 1.5)

title('Rician model (K = 0.6)')

legend('QPSK(simulated) 2x1', '8-PSK(simulated) 2x1',...

   'QPSK(theory) 2x1','8-PSK(theory) 2x1',...

   'QPSK(simulated) 2x2', '8-PSK(simulated) 2x2',...

   'QPSK(theory) 2x2','8-PSK(theory) 2x2')  

xlabel('EbNo (dB)')

ylabel('BER')

grid on

⛄ 运行结果

⛄ 参考文献

[1]于子甲, 董全德, 徐旭. 基于Alamouti的MIMO系统仿真设计[J]. 贵阳学院学报:自然科学版, 2020, 15(1):5.

[21]李万臣, 鄂颖. 基于Alamouti空时码的网络编码协作技术的研究[J].  2013.

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
13天前
|
传感器 算法
ANC主动降噪理论及Matlab代码实现
ANC主动降噪理论及Matlab代码实现
|
13天前
|
缓存 算法
基于机会网络编码(COPE)的卫星网络路由算法matlab仿真
**摘要:** 该程序实现了一个基于机会网络编码(COPE)的卫星网络路由算法,旨在提升无线网络的传输效率和吞吐量。在MATLAB2022a中测试,结果显示了不同数据流个数下的网络吞吐量。算法通过Dijkstra函数寻找路径,计算编码机会(Nab和Nx),并根据编码机会减少传输次数。当有编码机会时,中间节点执行编码和解码操作,优化传输路径。结果以图表形式展示,显示数据流与吞吐量的关系,并保存为`R0.mat`。COPE算法预测和利用编码机会,适应卫星网络的动态特性,提高数据传输的可靠性和效率。
|
2月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
2月前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
2月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
2月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)
|
2月前
|
供应链 算法
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
|
2月前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
|
2月前
|
算法 调度 SoC
电动汽车充放电V2G模型(Matlab代码)
电动汽车充放电V2G模型(Matlab代码)

热门文章

最新文章