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

📄 iofdm.m

📁 正交频分复用的调制解调:实现了mb-ofdm的基带超宽带信号调制解调
💻 M
字号:
%接收
function y=iofdm(XM)
%  XM=ofdm;
numbits=1024;      %发送总比特数

fc=50e9;           %抽样频率
T0=242.4e-9;       %ofdm符号持时间
TP=60.6e-9;        %循环前缀持时间
TG=70.1e-9;        %总保护间隔持续时间

N=128;                %一个ofdm符号的子载波数

tc=T0/N;              %一位持续的时间
ntcp=floor(TP/tc);    %循环前缀
n=(-ntcp+1:1:N);
NT=length(n);         %加循环前缀后的一个ofdm符号的子载波数
nb=ceil(numbits/N);   %总ofdm符号数

dt=1/fc;              %抽样间隔

if ntcp>0             %修正一位的持续时间
    tc=(T0+TP)/NT;
end
tonesamples=floor(tc/dt);%一位的抽样数
toneres=floor((TG-TP)/dt);%保护间隔的抽样数

symsamp=(tonesamples*NT)+toneres;%加保护间隔后的每个ofdm符号的抽样数

X=AWGN(XM',40);                %接收数据

%解调器程序主
for b=1:nb            %把数据分nb组
    ics=1+(b-1)*symsamp+toneres;%采样启始时刻
    zp=floor(tonesamples/2);
    Cr3=X(ics:ics+zp*NT*2-1);   %采一组数据
    
    
    Cr2=reshape(Cr3,zp,round(length(Cr3)/zp));
    Cr1=Cr2(1,:).';   %串并变换
    
    C=Cr1(2*ntcp+1:length(Cr1));%去循前缀
   
    Czp=fft(C);       %ofdm解调
    
    a1=floor(N/2);
    a2=N-a1;
    FS=2*N;
    c(1:a1)=Czp(1:a1);
    c(a1+1:N)=Czp(FS-a2+1:FS);%去过采样和并串变换
    
    R0((1+(b-1)*N):(N+(b-1)*N))=c;%恢复原信号
end
R=R0>0.5;
% error=[R',S']         %接收和发送的对比

%画图
x=[1:1000];

figure(1);

subplot(212);
stem(x(1:40),R(1:40));%解调信号
axis([0,40,-2,2]);
title('解调信号');


figure(2);
subplot(211)
stem(x(400:527),XM(400:527));
%axis([400,540,-0.01,0.01]);
title('发送信号');
subplot(212)
stem(x(400:527),X(400:527));
title('接收信号');

figure(3);
stem(x(1:40),Cr1(1:40));
% axis([0,40,-2,2]);
title('采样的有用信号');


figure(4);
stem(x(1:40),C(1:40));%解调信号
%axis([0,40,-2,2]);
title('解调输入信号');

figure(5);% 接收信号的功率谱密度
subplot(211);

f=(1/T0)*(1:N);
plot(f,abs(fft(X,N))/N);%信号频谱
subplot(212);
pwelch(X,[],[],[],1/tc);%功率谱密度


figure(6);% 解调信号的功率谱密度
subplot(211);

f=(1/T0)*(1:N);
plot(f,abs(fft(R,N))/N);%信号频谱
subplot(212);
pwelch(R,[],[],[],1/tc);%功率谱密度

⌨️ 快捷键说明

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