第【61期】--OTFS和OFDM在各种衰落信道下的误码率对比 --matlab完整代码

关注我,追更更多通信仿真!

摘要

正交时频空(OTFS)作为一种新型二维调制技术,旨在解决高移动性通信中传统正交频分复用(OFDM)因多普勒频移导致子载波正交性破坏的问题。本文基于蒙特卡洛仿真,在七种典型衰落信道(AWGN、Rayleigh、Rician、Nakagami‑m、Weibull、Suzuki、Hoyt)下,对比了OTFS与OFDM系统的误码率(BER)性能,并考察二者对多普勒频率的鲁棒性。

1. 引言

  • 随着高速铁路、车联网、无人机通信和低轨卫星互联网的快速发展,无线通信系统面临的信道条件日趋恶劣,尤其表现为显著的多普勒频移和时变多径衰落。传统OFDM系统通过将宽带信道划分为多个窄带子信道,在静态或慢衰落环境中表现出色,但当信道随时间快速变化时,子载波间的正交性被破坏,产生严重的载波间干扰(ICI),导致系统性能急剧下降。

  • 为应对这一挑战,OTFS调制将信息符号映射到时延‑多普勒(DD)域,利用该域中时变信道的稀疏性和准静态特性,实现稳健的传输。大量理论研究表明,OTFS在高多普勒环境下优于OFDM,但实际系统性能受均衡算法、信道估计精度等因素影响。

  • 本文通过搭建完整的端到端仿真链路,在不同衰落信道模型下对OTFS和OFDM进行对比,重点分析BER随信噪比和多普勒频率的变化规律,为工程实践提供直观的性能参考。

2. 系统模型与理论基础

2.1 OFDM系统模型

在这里插入图片描述
在这里插入图片描述

2.2 OTFS系统模型

在这里插入图片描述
在这里插入图片描述

2.3 衰落信道模型

无线传播环境可建模为线性时变滤波器,其基带冲激响应为:
在这里插入图片描述

2.3.1 AWGN

无多径,无衰落:
在这里插入图片描述

2.3.2 Rayleigh (瑞利衰落信道)

在这里插入图片描述

2.3.3 Rician (莱斯衰落信道)

在这里插入图片描述

2.3.4 Nakagami‑m (Nakagami‑m 衰落信道)

在这里插入图片描述

2.3.5 Weibull(威布尔衰落信道)

在这里插入图片描述

2.3.6. Suzuki(铃木衰落信道)

在这里插入图片描述

2.3.7 Hoyt(霍伊特衰落信道,又称 Nakagami‑q)

在这里插入图片描述

2.4 多普勒效应建模

在这里插入图片描述

3 仿真分析

3.1 仿真参数配置

参数类别参数名称取值/说明
系统参数子载波数 M M M64
每帧符号数 N N N16
循环前缀长度16
调制方式BPSK(2‑QAM)
采样频率 f s f_s fs 15   kHz × 64 = 960   kHz 15\,\text{kHz} \times 64 = 960\,\text{kHz} 15kHz×64=960kHz
每帧比特数 M × N × log ⁡ 2 ( 2 ) = 1024 M \times N \times \log_2(2) = 1024 M×N×log2(2)=1024 比特
多普勒频率范围 0 ∼ 1500 0 \sim 1500 01500 Hz,步进 100 Hz
信道模型多径延迟(采样点) [ 0 ,    2 ,    5 ] [0,\; 2,\; 5] [0,2,5]
多径功率增益(线性) [ 1 ,    0.4 ,    0.2 ] [1,\; 0.4,\; 0.2] [1,0.4,0.2]
信道类型AWGN, Rayleigh, Rician ( K = 5 K=5 K=5 dB), Nakagami‑m ( m = 1.5 m=1.5 m=1.5), Weibull ( β = 2 \beta=2 β=2), Suzuki ( σ log ⁡ = 0.5 \sigma_{\log}=0.5 σlog=0.5), Hoyt ( q = 0.5 q=0.5 q=0.5)
均衡器均衡准则MMSE(统一用于 OFDM 和 OTFS)

3.2 仿真图分析

静态多径环境下的仿真结果:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到

  • AWGN:两条曲线几乎重合,随着 SNR 增加,BER 平滑下降。

  • 其他衰落信道,中高SNR otfs优势明显

2 .多普勒鲁棒性仿真(时变信道,存在多普勒)

在这里插入图片描述

这里otfs均衡使用的是线性均衡方法 MMSE‑SIC,且是在 TF 域 进行迭代干扰消除。这个算法本质上是 线性 MMSE 加硬判决反馈,并未真正利用 DD 域信道的稀疏结构(。在时变信道下,这种简化的 SIC 无法有效抑制由多普勒引起的 载波间干扰(ICI),因此 OTFS 退化为与 OFDM 类似的表现,这说明OTFS 的抗多普勒优势并非天然存在,而是依赖于合适的均衡/检测算法;在线性 MMSE 下两者性能相当,只有在采用消息传递(MP)等非线性检测时,OTFS 的稀疏性才能被利用并获得增益。

综上:在静态信道中,otfs能取得优于ofdm的ber性能;但在高动态场景中,必须采用更复杂的非线性检测才能兑现其理论潜力。
后续会继续推出针对otfs的均衡算法。

部分代码:

clc; clear; close all;

%% ========================================================================
% 系统参数
%% ========================================================================
M = 64;                  % 子载波数
N = 16;                  % 符号数
cpSize = 16;             % 循环前缀
constOrder = 2;          % BPSK
numFrames = 100;         % BER vs SNR 帧数
snrRange = -10:5:20;     % SNR 扫描 (dB)
dopplerRange = 0:500:5000; % 多普勒频率 (Hz)
fs = 15e3 * M;           % 采样率
numBits = M * N * log2(constOrder);

channelNames = {'AWGN','Rayleigh','Rician','Nakagami-m','Weibull','Suzuki','Hoyt'};
numCh = length(channelNames);

fprintf('仿真启动... (建议 numFrames=20 以快速测试 BER vs SNR)\n');

%% ========================================================================
% BER vs SNR (OFDM 用 MMSE,OTFS 用 MMSE-SIC)
%% ========================================================================
ber_ofdm = zeros(length(snrRange), numCh);
ber_otfs = zeros(length(snrRange), numCh);
pathDelays = [0 2 5];
pathGains = [1 0.4 0.2];
numTaps = max(pathDelays) + 1;

for s = 1:length(snrRange)
    snr = snrRange(s);
    for f = 1:numFrames
        bits = randi([0 1], numBits, 1);
        syms = qammod(bits, constOrder, 'InputType','bit','UnitAveragePower',true);
        X_DD = reshape(syms, M, N);
        txOT = transmitOTFS(X_DD, M, N, cpSize);
        txOF = transmitOFDM(X_DD, M, N, cpSize);
        
        for k = 1:numCh
            h = generateExtendedChannel(pathDelays, pathGains, numTaps, channelNames{k});
            H_freq = fft(h, M);
            
            % OFDM (MMSE)
            rxOF = awgn(filter(h, 1, txOF), snr, 'measured');
            ber_ofdm(s,k) = ber_ofdm(s,k) + biterr(bits, decodeOFDM_MMSE(rxOF, H_freq, M, N, cpSize, constOrder, snr));
            
            % OTFS (MMSE-SIC) 
            rxOT = awgn(filter(h, 1, txOT), snr, 'measured');
            ber_otfs(s,k) = ber_otfs(s,k) + biterr(bits, decodeOTFS_MMSE_SIC(rxOT, H_freq, M, N, cpSize, constOrder, snr, 3));
        end
    end
end
ber_ofdm = ber_ofdm / (numBits * numFrames);
ber_otfs = ber_otfs / (numBits * numFrames);

%% ========================================================================
% 多普勒鲁棒性 (固定 SNR=15 dB,Rayleigh 信道)
%% ========================================================================
numFrames_doppler = 500;   % 多普勒测试帧数
[b_ot_d, b_of_d] = deal(zeros(length(dopplerRange), 1));
fprintf('多普勒仿真中 (帧数=%d, 使用 Jakes 模型)...\n', numFrames_doppler);

pg_norm = pathGains / sum(pathGains);
pg_dB = 10*log10(pg_norm);
delay_sec = pathDelays / fs;

for d = 1:length(dopplerRange)
    fd = dopplerRange(d);
    err_ot = 0; err_of = 0;
    
    for f = 1:numFrames_doppler
        bits = randi([0 1], numBits, 1);
        syms = qammod(bits, constOrder, 'InputType','bit','UnitAveragePower',true);
        X_DD = reshape(syms, M, N);
        txOT = transmitOTFS(X_DD, M, N, cpSize);
        txOF = transmitOFDM(X_DD, M, N, cpSize);
        
        % 时变信道对象
        chan = comm.RayleighChannel('SampleRate', fs, ...
            'PathDelays', delay_sec, ...
            'AveragePathGains', pg_dB, ...
            'MaximumDopplerShift', fd, ...
            'PathGainsOutputPort', true, ...
            'RandomStream', 'mt19937ar with seed', ...
            'Seed', randi(1e5));
        
        % 初始信道估计
        reset(chan);
        [~, pg0] = chan(complex(zeros(1,1)));
        h0 = zeros(numTaps,1);
        h0(pathDelays+1) = pg0(:);
        H_freq = fft(h0, M);
        
        % 通过信道
        reset(chan);
        rxOT = chan(txOT);
        reset(chan);
        rxOF = chan(txOF);
        
        rxOT = awgn(rxOT, 15, 'measured');
        rxOF = awgn(rxOF, 15, 'measured');
        
        % 解调
        err_ot = err_ot + biterr(bits, decodeOTFS_MMSE_SIC(rxOT, H_freq, M, N, cpSize, constOrder, 15, 3));
        err_of = err_of + biterr(bits, decodeOFDM_MMSE(rxOF, H_freq, M, N, cpSize, constOrder, 15));
    end
    b_ot_d(d) = err_ot / (numBits * numFrames_doppler);
    b_of_d(d) = err_of / (numBits * numFrames_doppler);
end

4 总结

本文通过蒙特卡洛仿真,在七种典型衰落信道下对比了OTFS与OFDM系统的误码率性能。结果表明:在静态或慢衰落信道中,OTFS凭借其二维调制特性,在中高信噪比下性能优于OFDM;但在高多普勒时变信道下,若仅使用线性均衡算法(如MMSE-SIC),OTFS的抗多普勒优势无法体现,其性能与OFDM相当,必须采用更复杂的非线性检测算法(如消息传递)才能充分发挥OTFS在时延-多普勒域的稀疏性优势。

仿真代码可见文末VX公众号(包含往期博客所有代码),所见即所得

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路明非的sakura

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值