clear all;
close all;
clc;
%% Constants
fs = 76.8e6; %串行后采样率
ts = 1/fs;
N_fft = 512; %FFT点数512
delta_freq = fs/N_fft; %子载波间隔
N_fft_2 = N_fft/2;
N_CP = 32; %循环前缀点数
N_channel = 512; %实际的通道数300
N_frame_symbol = 140-4; %帧符号数 刚好一帧,有4个同步信号
N_shixi = 100; %时隙个数
N_ChildFrame = N_shixi/2; %子帧个数,每个子帧有2个时隙
N_frame = N_ChildFrame/10; %帧个数,每帧有10个子帧
N_symbol = (N_fft+N_CP)*(N_frame_symbol+4);
SNR = 10;
% SNR = 100;
% doppler = 150e3:10e3:400e3;%:1000:10e4;
FRM = N_channel*N_frame_symbol*2; % 2 bits是一个子载波
% 选择哪一种信道估计方式和插值方式
method_esti = 2; %信道估计方法 1表示LS, 2表示LS-DFT, 3表示MMSE
method_inter = 1; %插值方式,1表示线性插值,2表示DFT插值
%% Initializations
Modulator = comm.QPSKModulator('BitInput',true);
AWGN = comm.AWGNChannel;
DeModulator = comm.QPSKDemodulator('BitOutput',true);
BitError = comm.ErrorRate;
u = randi([0 1], FRM,1); % Generate random bits
% u = zeros(81600,1);
% 暂时不考虑信道交织编码,直接进行QPSK调制
mod_sig1 = step(Modulator,u); % QPSK Modulator
figure;
plot(mod_sig1,'o');
title('没加噪声时产生的复信号的星座图');
% mod_sig_noise = awgn(mod_sig1,SNR);
% figure;plot(mod_sig_noise,'o');title(['加噪声时产生的复信号的星座图 SNR=',num2str(SNR),'10 dB']);
% disp(['信噪比',num2str(SNR),'dB']);
%% ifft
mod_sig = reshape(mod_sig1,512,136);
sig_ifft = ifft(mod_sig(:,1:end),512);
% figure;plot(fftshift(10*log10(abs(fft(sig_ifft)))));
%% 并串转换
[size_CP_l,size_CP_r] = size(sig_ifft);
sig_serial = reshape(sig_ifft,1,size_CP_l*size_CP_r);%sig_ifft(:,1).';
%% 加多普勒
t = (0:(length(sig_serial)-1))*ts;
f1 = 10;
% f2 = 1/2/pi;
% doppler = f1*t+360e3*120*sin(1/120*t); %多普勒
doppler = 0.2*delta_freq;
% for doppler_loop=1:length(doppler)
% for SRN_loop=1:length(SNR)
% for doppler_loop=1:length(doppler)
sig_serial_doppler = sig_serial.*exp(1i*2*pi*f1*t);
sig_noise = awgn(sig_serial_doppler,SNR,'measured');
% figure;plot(fftshift(abs(fft(sig_serial_doppler))));title('发送信号并串转换后的频谱');
%%
% sig_rx = sig_noise;
% sig_fft = fft(sig_rx,512);
sig_rx = reshape(sig_noise,512,136);
sig_fft = fft(sig_rx(:,1:end),512);
sig_rx2 = reshape(sig_fft,length(sig_noise),1);%sig_fft.';
rx_sign = step(DeModulator, sig_rx2);
err_cnt = sum(abs(rx_sign(1:end/2)-u(1:end/2)));
figure;plot(sig_rx2(1:end/2),'o');
% title(['相对频偏为',num2str(doppler(doppler_loop)/delta_freq)]);
% bits_err(doppler_loop) = err_cnt/length(rx_sign);
% bits_err(k) = BitError.step(tx_sign',rx_sign');
% end
% figure;plot(rx_sign);
EbN0_dB= SNR-3;
figure
semilogy(doppler/delta_freq,bits_err,'b*-');
xlabel('相对频偏');%Eb/N0 (dB)
ylabel('BER');
寒泊
- 粉丝: 86
- 资源: 1万+
最新资源
- 多微网优化模型matlab 采用粒子群算法分析两个微网的优化调度,得到蓄电池,发电机以及微网间功率传输,程序有参考资料
- 潮流计算程序matlab 牛拉法 采用matlab对9节点进行潮流计算,采用牛拉法,程序运行可靠
- 微网优化调度matlab 采用matlab+yalmip编制含分布式和储能的微网优化模型,程序采用15分钟为采集节点,利用cplex求解,程序考虑发电机的启停约束,程序运行可靠
- PMSM永磁同步电机仿真三电平SVPWM矢量控制matlab PMSM双环矢量控制传统三电平
- 路径规划人工势场法以及改进人工势场法matlab代码,包含了
- MobaXterm 是一款功能强大且实用的终端仿真器软件.docx
- 三菱FX3U底层源码,PLSR源码 总体功能和指令可能支持在RUN中下载程序,支持注释的写入和读取,支持脉冲输出与定位指令(包括PLSY PWM PLSR PLSV DRVI DRVA 等指令
- Oracle Database Gateways for Win32-11gR2
- python071基于RSA加密算法软件的研究设计
- 成熟量产低压无刷伺服驱动 方案 全套软硬件资料 源码 原理图 需要的直接拿 基于28035平台
- 欧姆龙PLC ST语言6轴伺服RS232C通讯板CP1W-C IF0 真实项目程序,ST语言写的FB块 PLC用是两台CP1H-X40DT-D配置4块RS232C通讯板CP1W-CIF01 触摸屏是N
- 欧姆龙CP1H与力士乐VFC-x610变频器通讯程序功能:原创程序,可直接用于现场程序 欧姆龙CP1H的CIF11通讯板,实现对力士乐VFC-x610变频器 设定频率,控制正反转,读取实际频率,读取
- 级联型电力电子变压器,高压直流MMC控制系统,级联数可选,调 制方式有移相载波,nlm及混合调制,拥有冒泡排序,递归排序等方法,可控制三相不平衡与环流
- 西门子PLC双轴定位算法电池焊接控制程序-S7-1200 +威纶通触摸屏 S7-1200PLC做的电池焊接程序,电池包里面有n*m行列个电池 程序设计灵活SCL语言+梯形图,采用了位置试教与定位路径规
- 变压器副边突然短路simulink仿真
- MATLAB代码:基于模型预测控制的楼宇负荷需求响应研究 关键词:楼宇负荷 空调 模型预测控制 需求响应 仿真平台:MATLAB+CVX平台 主要内容:代码主要做的是一个建筑楼宇的需求响应问题,首
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0