clear all;
clc;
f1=128;%设置fft长度
g1=32;%循环前缀长度
Ns=8;%每个子载波包含的符号数
para=128;%子载波数
N=1024;%串并变换前的符号数
bit=2;%每个符号的bit数
signal=round(rand(1,para*Ns*bit));%源信号
%调制和串并变换
din2=1-2*signal;
din_temp=reshape(din2,2,length(signal)/2);
for b=1:length(signal)/2
QPSKdata(b)=din_temp(1,b)+j*din_temp(2,b);
end
complex_qam_data=reshape(QPSKdata,128,8);
x=complex_qam_data;
%////////////////////调制和串并变换的实现////////////////////////////
%////////////////////显示调制后的星座图///////////////////////////////
figure(1);
plot(complex_qam_data,'*r');%16qam调制后星座图
axis([-4,4,-4,4]);
grid on
%////////////////////显示调制后的星座图///////////////////////////////
%//////////////////////IFFT模块//////////////////////////////////////
y=ifft(x);
ich2=real(y);
qch2=imag(y);
%/////////////////////IFFT模块///////////////////////////////////////
%////////////////////插入保护间隔////////////////////////////
ich3=[ich2(f1-g1+1:f1,:);ich2];
qch3=[qch2(f1-g1+1:f1,:);qch2];
%figure(3)
%subplot(211);stem(ich3);%这里的插入保护间隔就是插入循环前缀
%subplot(212);stem(qch3);
%////////////////////插入保护间隔////////////////////////////
%///////////////////并串变换////////////////////////////////
ich4=reshape(ich3,1,(f1+g1)*Ns);
qch4=reshape(qch3,1,(f1+g1)*Ns);
TrData=ich4+qch4.*sqrt(-1);%发射数据为复数,这是一个什么概念,这是OFDM的基带已调信号啊?
%TrData=reshape(y,1,128*8);
%///////////////////并串变换////////////////////////////////
%%/////////////////添加噪声///////////////////////////////////////////
Tx_signal_power=var(TrData);%发送信号功率
a=[0:0.2:50];
for b=1:length(a)
SNR=a(b);
linear_SNR=10^(SNR/10);%线性信噪比
noise_sigma=Tx_signal_power/linear_SNR;
noise_scale_factor=sqrt(noise_sigma);%标准差sigma
noise=randn(1,(f1+g1)*Ns)*noise_scale_factor;%产生正态分布噪声序列
%noise=wgn(1,length(windowed_Tx_data),noise_sigma,'complex');%产生复高斯白噪声信号
ReData=TrData+noise;%接收到的信号加噪声
%/////////////////添加噪声///////////////////////////////////////////
%/////////////实现串并变换,并且移除保护间隔///////////////////
idata=real(ReData);
qdata=imag(ReData);
idata1=reshape(idata,f1+g1,Ns);%将实部数据实现串并变换
qdata1=reshape(qdata,f1+g1,Ns);%将虚步数据实现串并变换
idata2=idata1(g1+1:g1+f1,:);%移除保护间隔(循环前缀)
qdata2=qdata1(g1+1:g1+f1,:);
%/////////////实现串并变换,并且移除保护间隔///////////////////
%////////////////fft模块////////////////////////////////////////////
Rex=idata2+qdata2.*sqrt(-1);
ry=fft(Rex);%数据格式是什么,128*6?
ReIChan=real(ry);
ReQChan=imag(ry);
%////////////////fft模块////////////////////////////////////////////
%//////////////////////QPSK解调//////////////////////////
Y=reshape(ry,1,1024);
z(1,:)=real(Y);
z(2,:)=imag(Y);
yout=reshape(z,1,2048);
yout=-1.*yout;
ReSig=yout>0.001;
%//////////////////////QPSK解调//////////////////////////
%//////////////////计算误码率///////////////////////////////////////////
Signal_Rx=ReSig;
%figure(9);
%subplot(211);
%stem(signal(1:100));
% subplot(212);
% stem(Signal_Rx(1:100));
bit_errors=find(Signal_Rx-signal);
bit_error_count=size(bit_errors,2);
ber(b)=bit_error_count/(para*Ns*bit);
end
figure;
plot(ber);
title('基于IFFT的OFDM系统的误码率(带循环前缀)');
没有合适的资源?快使用搜索试试~ 我知道了~
【误码率仿真】基于matlab IFFT OFDM误码率仿真【含Matlab源码 2675期】.zip
共3个文件
jpg:2个
m:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 34 浏览量
2023-06-07
10:28:52
上传
评论
收藏 24KB ZIP 举报
温馨提示
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:IFFTOFDMm; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开IFFTOFDM.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合
资源推荐
资源详情
资源评论
收起资源包目录
【误码率仿真】基于matlab IFFT OFDM误码率仿真【含Matlab源码 2675期】.zip (3个子文件)
【误码率仿真】基于matlab IFFT OFDM误码率仿真【含Matlab源码 2675期】
运行结果1.jpg 21KB
运行结果2.jpg 20KB
IFFTOFDM.m 3KB
共 3 条
- 1
资源评论
海神之光
- 粉丝: 5w+
- 资源: 6110
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功