📄 ofdm.m
字号:
clear all;
numbits=1024;
fp=1e9;
fc=50e9;
T0=242.4e-9;
TP=60.6e-9;
TG=70.1e-9;
A=1;
N=128;
tc=T0/N;
ntcp=floor(TP/tc);
n=(-ntcp+1:1:N);
NT=length(n);
[bits]=rand(1,numbits)>0.5;
nb=length(bits);
ns=ceil(nb/2);
b0=zeros(1,ns*2);
b0=bits;
j=sqrt(-1);
for s=1:ns
ba=b0(((s-1)*2)+1);
bb=b0(((s-1)*2)+2);
k=bb+ba*2;
p=((pi/4)*(2*k-1))-pi;
Sc(s)=cos(p);
Ss(s)=sin(p);
S(s)=Sc(s)+j*Ss(s);
end
nb=ceil(length(S)/N);
S0=zeros(1,nb*N);
S0=S;
dt=1/fc;
if ntcp>0
tc=(T0+TP)/NT;
end
tonesamples=floor(tc/dt);
toneres=floor((TG-TP)/dt);
symsamp=(tonesamples*NT)+toneres;
totsamp=symsamp*nb;
X=[zeros(1,totsamp)'];
for b=1:nb
c=S0((1+(b-1)*N):(N+(b-1)*N));
A=length(c);
a1=floor(A/2);
a2=A-a1;
FS=2*A;
Czp=zeros(FS,1);
Czp(1:a1)=[c(1:a1).'];
Czp(FS-a2+1:FS)=[c(A-a2+1:A).'];
C=ifft(Czp);
if ntcp>0
C1=zeros(length(C)+2*ntcp,1);
C1(1:(2*ntcp))=C(2*N+1-(2*ntcp):2*N);
C1(2*ntcp+1:length(C1))=C;
else
C1=C;
end
zp=floor(tonesamples/2);
C2=[C1.';zeros((zp-1),length(C1))];
C3=C2(:);
g=ones(1,zp);
C4=conv(g,C3);
C4=C4(1:(zp*NT*2));
ics=1+(b-1)*symsamp+toneres;
X(ics:ics+length(C4)-1)=C4;
end
XM=X';
XM=XM(1:totsamp);
I=real(XM);
Q=imag(XM);
time=linspace(0,totsamp*dt,length(I));
SI=I.*(cos((2*pi*fp).*time));
SQ=Q.*(sin((2*pi*fp).*time));
Stx=SI-SQ;
k=plot(Stx);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -