⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ofdm.m

📁 ofdm通信系统的matlab仿真。 实现ofdm通信系统。
💻 M
字号:
clear;
clc;
%——————————————————————————————%%                         参数设置                           %%——————————————————————————————% 
SNR=10;           % 信噪比
fl=128;           % 设置FFT长度
Ns=6;             % 设置一个祯结构中OFDM信号的个数
para=128;         % 设置并行传输的子载波个数
sr=250000;        % 符号速率
br=sr.*2;         % 每个子载波的比特率
gl=32             % 保护时隙的长度
%——————————————————————————————%%                     伪随机数列信号生成                     %%——————————————————————————————%
Signal=rand(1,para*Ns*2)>0.5;          % 产生0,1随机序列,符号数为para*Ns*2

for i=1:para
    for j=1:Ns*2
        SigPara(i,j)=Signal(i*j);      % 串并转换
    end
end
%——————————————————————————————%
%                          QPSK调制                          %%——————————————————————————————%
for j=1:Ns
    ich(:,j)=SigPara(:,2*j-1);
    qch(:,j)=SigPara(:,2*j);
end
kmod=1./sqrt(2);                      % 归一化因子
ich1=ich.*kmod;
qch1=qch.*kmod;
x=ich1+qch1.*sqrt(-1);                % 频域数据变时域
%——————————————————————————————%%                           IFFT                             %
%——————————————————————————————%
y=ifft(x);
ich2=real(y);
qch2=imag(y);
%——————————————————————————————%
%                        插入保护间隔                        %%——————————————————————————————%
ich3=[ich2(fl-gl+1:fl,:);ich2];
qch3=[qch2(fl-gl+1:fl,:);qch2];
                        % 并串转换 %
ich4=reshape(ich3,1,(fl+gl)*Ns);
qch4=reshape(qch3,1,(fl+gl)*Ns);
                    % 形成复数发射数据 %
TrData=ich4+qch4.*sqrt(-1);

                         % 接收机 %
%——————————————————————————————%
%                      加入高斯白噪声                        %
%——————————————————————————————%
ReData=awgn(TrData,SNR,'measured');

                         % 接收端 %
%——————————————————————————————%
%                       移去保护间隔                         %
%——————————————————————————————%
idata=real(ReData);
qdata=imag(ReData);
idata1=reshape(idata,fl+gl,Ns);
qdata1=reshape(qdata,fl+gl,Ns);
idata2=idata1(gl+1:gl+fl,:);   
qdata2=qdata1(gl+1:gl+fl,:);       
%——————————————————————————————%
%                           FFT                              %
%——————————————————————————————%
Rex=idata2+qdata2*sqrt(-1);
ry=fft(Rex);
ReIChan=real(ry);
ReQChan=imag(ry);
ReIchan=ReIChan/kmod;
ReQchan=ReQChan/kmod;
%——————————————————————————————%
%                         QPSK解调                           %
%——————————————————————————————%
for j=1:Ns
    RePara(:,2*j-1)=ReIChan(:,j);
     RePara(:,2*j)=ReQChan(:,j);
end
ReSig=reshape(RePara,1,para*Ns*2);
%——————————————————————————————%
%                      符号抽样判决                          %
%——————————————————————————————%
ReSig=ReSig>0.5;
%——————————————————————————————%%                          信号图                            %%——————————————————————————————%
subplot(2,1,1),stem(ReSig(1:50)),grid minor;
title('接收信号');
xlabel('x'),ylabel('y');

subplot(2,1,2),stem(Signal(1:50)),grid minor;
xlabel('x'),ylabel('y');
title('发送信号')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -