OFDM 之STO2

2 篇文章 0 订阅

OFDM 之STO2

参数:
调制方式:64QAM
FFT:1024
CP:88

用于模拟两个用户,第一个用户的时偏为STO1,第二个用户的时偏为STO2。第一个用户占用的数据位置为1:512,第二个用户占用的数据为513:1024;导频放置方式为间隔一个位置放置。

代码

clc;clear;close all


M = 64;
k = log2(M);
FFT_size = 1024;
STO1 = 10;
STO2 = 30;
IFO = 5;
FFO = 0;
t2 = (0:1023).';
phase = exp(-1i*2*pi*STO1/1024*t2);

t3 = (88:1111).';

%% 发送端
% 用户1发射数据
data1 = randi([0 1],FFT_size*k/2,1);
txSig1 = qammod(data1,M,'InputType','bit','UnitAveragePower',true);
ifft_tx = ifft([txSig1;zeros(512,1)],FFT_size);
UE1_data = [ifft_tx(end-88+1:end);ifft_tx;zeros(30,1)];

% 用户2发射数据
data2 = randi([0 1],FFT_size*k/2,1);
txSig2 = qammod(data2,M,'InputType','bit','UnitAveragePower',true);
ifft_tx = ifft([zeros(512,1);txSig2],FFT_size);
UE2_data = [ifft_tx(end-88+1:end);ifft_tx;zeros(30,1)];

txSig = [txSig1;txSig2];

%% 信道
% 无信道

%% 接收端
decp_data = UE1_data(89-STO1:end-STO1-30)+UE2_data(89-STO2:end-STO2-30);
fft_data = fft(decp_data,1024);
H_est = fft_data(1:2:end)./txSig(1:2:end);
H = interp1(1:2:1024,H_est,(1:1024).','linear','extrap');

phase_data = fft_data./H;

rxSig = qamdemod(phase_data,M,'OutputType','bit','UnitAveragePower',true);
[num,err] = biterr([data1;data2],rxSig);
disp(['错误比特个数为: ', num2str(num) ,'  ' ,'误码率为:'  ,num2str(err)])


%% 画图.
figure(1)
scatterplot(phase_data)

%% STO估计不准,就会引入连续相位误差,非共相位误差

星座图

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值