OFDM雷达matlab仿真

OFDM信号广泛应用于无线通信领域。OFDM是一种多载波信号,由一组称为子载波的正交复指数组成。每个子载波的复振幅可用于承载通信数据,从而实现高数据速率。OFDM波形还具有多普勒容限和无距离 - 多普勒耦合的特点。这些OFDM特性对雷达应用具有吸引力。本节示例展示了如何使用OFDM波形同时进行雷达传感和通信。

设OFDM子载波数量为1024。由于所有子载波在频率上必须等间隔分布,计算子载波间隔。

Nsc = 1024; % 子载波数量
df = B/Nsc; % OFDM子载波间隔
Tsym = 1/df; % OFDM符号持续时间

根据OFDM系统设计规则,子载波间隔必须至少是信号经历的最大多普勒频移的10倍。这是确保子载波正交性所必需的。验证本示例所考虑的场景是否满足此条件。

df > 10*fdmax

为了避免符号间干扰,OFDM符号前面会添加循环前缀。根据最大感兴趣距离计算循环前缀持续时间。

Tcp = range2time(Rmax); % 循环前缀(CP)持续时间
Ncp = ceil(fs*Tcp); % 循环前缀的样本长度
Tcp = Ncp/fs; % 调整循环前缀持续时间,使其样本数为整数

Tofdm = Tsym + Tcp; % 含循环前缀的OFDM符号持续时间
Nofdm = Nsc + Ncp; % 一个OFDM符号中的样本数

指定一些子载波作为保护带。

nullIdx = [1:9 (Nsc/2+1) (Nsc-8:Nsc)]'; % 保护带和直流子载波
Nscd = Nsc-length(nullIdx); % 数据子载波数量

生成要传输的二进制数据。由于每个OFDM子载波可以承载一个复数据符号,因此首先必须对生成的二进制数据进行调制。使用QAM调制对生成的二进制数据进行调制。最后,对QAM调制后的符号进行OFDM调制。

bps = 6; % 每个QAM符号(以及OFDM数据子载波)的比特数
K = 2^bps; % 调制阶数
Mofdm = 128; % 传输的OFDM符号数量
dataTx = randi([0,1], [Nscd*bps Mofdm]);
qamTx = qammod(dataTx, K, 'InputType', 'bit', 'UnitAveragePower', true);
ofdmTx = ofdmmod(qamTx, Nsc, Ncp, nullIdx);

假设相干处理间隔足够长,可以对Mofdm个符号进行相干处理。计算单个OFDM帧的持续时间和一帧中的总数据比特数。

Tofdm*Mofdm % 帧持续时间(秒)
Nscd*bps*Mofdm % 总比特数

注意,OFDM帧持续时间与PMCW帧持续时间相近,但传输的总比特数要大几个数量级。

雷达信号仿真与处理

使用与PMCW情况相同的系统来模拟JRC对OFDM信号的传输以及雷达接收器对目标回波的接收。

xofdm = reshape(ofdmTx, Nofdm, Mofdm);

% OFDM波形不是恒模波形。生成的OFDM样本功率远小于1。为了充分利用可用的发射功率,对波形进行归一化处理,使功率最大的样本功率为1。
xofdm = xofdm/max(sqrt(abs(xofdm).^2), [], 'all');

% 为雷达接收器接收的信号预分配空间
yofdmr = zeros(size(xofdm));

% 在运行仿真之前重置表示JRC和目标的平台对象
reset(jrcmotion);
reset(tgtmotion);

% 假设所有Mofdm个符号都在单个相干处理间隔(CPI)内传输,每次传输一个OFDM符号
for m = 1:Mofdm
    % 更新传感器和目标位置
    [jrcpos, jrcvel] = jrcmotion(Tofdm);
    [tgtpos, tgtvel] = tgtmotion(Tofdm);
    
    % 计算从发射阵列观察到的目标角度
    [tgtrng, tgtang] = rangeangle(tgtpos, jrcpos);

    % 发射信号
    txsig = transmitter(xofdm(:, m));

    % 向目标辐射信号
    radtxsig = radiator(txsig, tgtang);

    % 应用自由空间信道传播效应
    chansig = radarChannel(radtxsig, jrcpos, tgtpos, jrcvel, tgtvel); 

    % 信号从目标反射
    tgtsig = target(chansig, false);
    
    % 在接收阵列接收目标回波
    rxsig = collector(tgtsig, tgtang);
 
    % 在接收器处添加热噪声
    yofdmr(:, m) = receiver(rxsig);
end

处理目标回波以获得距离 - 多普勒图。信号处理步骤如框图所示。
在这里插入图片描述

去除循环前缀,并使用ofdmdemod函数在快速时间域计算DFT。

yofdmr1 = reshape(yofdmr, Nofdm*Mofdm, 1);

% 解调接收到的OFDM信号(计算DFT)
Yofdmr = ofdmdemod(yofdmr1, Nsc, Ncp, Ncp, nullIdx);

组成接收OFDM信号的子载波的复振幅就是发射的QAM符号。因此,为了去除通信数据,将接收信号的DFT除以发射的QAM符号。

Zofdmr = Yofdmr./qamTx;

使用phased.RangeDopplerResponse计算并绘制距离 - 多普勒图。

% 距离 - 多普勒响应对象在慢时间域计算DFT,然后在快速时间域计算IDFT以获得距离 - 多普勒图
rdr = phased.RangeDopplerResponse('RangeMethod', 'FFT', 'SampleRate', fs, 'SweepSlope', -B/Tofdm,...
    'DopplerOutput', 'Speed', 'OperatingFrequency', fc, 'PRFSource', 'Property', 'PRF', 1/Tofdm, ...
    'ReferenceRangeCentered', false);

figure;
plotResponse(rdr, Zofdmr, 'Unit', 'db');
xlim([-vrelmax vrelmax]);
ylim([0 Rmax]);

通信信号仿真与处理

使用与PMCW情况相同的随机莱斯信道模型来模拟信号从JRC发射机到下行链路用户的传播。

[yofdmc, pathGains] = commChannel(ofdmTx);

添加接收噪声。

yofdmc = awgn(yofdmc, SNRu, "measured");

计算OFDM信道响应以进行信道均衡。

channelInfo = info(commChannel);
pathFilters = channelInfo.ChannelFilterCoefficients;
toffset = channelInfo.ChannelFilterDelay;
Hofdm = ofdmChannelResponse(pathGains, pathFilters, Nsc, Ncp, ...
    setdiff(1:Nsc, nullIdx), toffset);

进行解调和均衡。处理步骤的框图如下所示。
在这里插入图片描述

zeropadding = zeros(toffset, 1);
ofdmRx = [yofdmc(toffset+1:end,:); zeropadding];

qamRx = ofdmdemod(ofdmRx, Nsc, Ncp, Ncp/2, nullIdx);
qamEq = ofdmEqualize(qamRx, Hofdm(:), 'Algorithm', 'zf');

解调QAM符号以获得接收的二进制数据。

dataRx = qamdemod(qamEq, K, 'OutputType', 'bit', 'UnitAveragePower', true);
refconst = qammod(0:K-1, K, 'UnitAveragePower', true);
constellationDiagram = comm.ConstellationDiagram('NumInputPorts', 1, ...
    'ReferenceConstellation', refconst, 'ChannelNames', {'Received QAM Symbols'});

% 显示组成前10个接收OFDM符号的QAM数据符号
constellationDiagram(qamEq(1:Nscd*10).');

计算误码率。

[numErr,ratio] = biterr(dataTx, dataRx)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值