📄 ofdm_systom.m
字号:
clc;
clear all;
k=0;
AMPLITUDE=210000;
AMPLITUDE1=70000;
AMPLITUDE3=148493;
data=zeros(1,32);
module_table2=zeros(1,8);
module_table2(1)= AMPLITUDE;
module_table2(2)= AMPLITUDE3+AMPLITUDE3*j ;
module_table2(3)= AMPLITUDE*j ;
module_table2(4)= -AMPLITUDE3+AMPLITUDE3*j ;
module_table2(5)= -AMPLITUDE ;
module_table2(6)= -AMPLITUDE3-AMPLITUDE3*j ;
module_table2(7)= -AMPLITUDE*j ;
module_table2(8)= AMPLITUDE3+-AMPLITUDE3*j;
data_send=[3 3 2 3 1 3 0 3 3 2 2 2 0 0 1 2 0 2 3 1 2 1 1 1 0 1 3 0 2 0 1 0];
phase_refer_copy= [4 ,3 ,1, 0 ,7 , 5 ,2 ,6,7, 4, 5, 2, 1, 3, 3, 0,5, 6, 2, 0, 1, 2, 6, 2,1, 2, 4, 7, 3, 0, 5, 6]+1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%data_send数组组帧%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%调制%%%%%%
for i=1:32
if data_send(i)==3
k =rem((phase_refer_copy(i) + 1),8);
if k==0
k=8;
end
data(i)= module_table2(k);
phase_refer_copy(i) = k;
elseif data_send(i)==2
k = rem((phase_refer_copy(i) + 7), 8);
if k==0
k=8;
end
data(i)= module_table2(k);
phase_refer_copy(i) = k;
elseif data_send(i)==1
k = rem((phase_refer_copy(i) + 3) ,8);
if k==0
k=8;
end
data(i)= module_table2(k);
phase_refer_copy(i) = k;
else
k = rem((phase_refer_copy(i) + 5) , 8);
if k==0
k=8;
end
data(i)= module_table2(k);
phase_refer_copy(i) = k;
end
end
%figure(1)
% plot(data,'r*')
%grid on
%%%%%%%2倍过采样%%%%%%%%
data_insert0=[data(1:16) zeros(1,32) data(17:32)];
out_ifft=ifft(data_insert0,64);
out_ifft_real=real(out_ifft);
out_ifft_imag=imag(out_ifft);
infosymbol=zeros(1,160);
m=33;n=34;
for i=1:64
infosymbol(m)=out_ifft_real(i);
infosymbol(n)=out_ifft_imag(i);
m=m+2;
n=n+2;
end
for i=1:32
infosymbol(i)=infosymbol(i+128);%infosymbol是符号信息
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%加帧头%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
syn_PN=zeros(1,32);
syn_PN(1)=-AMPLITUDE+j*AMPLITUDE;syn_PN(2)=-AMPLITUDE-AMPLITUDE*j;syn_PN(3)=AMPLITUDE+AMPLITUDE*j;syn_PN(4)=AMPLITUDE+AMPLITUDE*j;
syn_PN(5)=-AMPLITUDE+AMPLITUDE*j;syn_PN(6)=AMPLITUDE-AMPLITUDE*j;syn_PN(7)=AMPLITUDE-AMPLITUDE*j;syn_PN(8)=-AMPLITUDE+AMPLITUDE*j;
syn_PN(25)=AMPLITUDE-AMPLITUDE*j;syn_PN(26)=AMPLITUDE+AMPLITUDE*j;syn_PN(27)=AMPLITUDE-AMPLITUDE*j;syn_PN(28)=AMPLITUDE-AMPLITUDE*j;
syn_PN(29)=-AMPLITUDE+AMPLITUDE*j;syn_PN(30)=-AMPLITUDE+AMPLITUDE*j;syn_PN(31)=-AMPLITUDE+AMPLITUDE*j;syn_PN(32)=-AMPLITUDE+AMPLITUDE*j;
syn_PN_IFFT=ifft(syn_PN,32);
synsymbol=zeros(1,320);
M=33;N=34;
for i=1:32
synsymbol(M)=real(syn_PN_IFFT(i));
synsymbol(N)=imag(syn_PN_IFFT(i));
M=M+2;
N=N+2;
end
for i=33:96
synsymbol(i+64)=synsymbol(i);
end%%%同步头
phase_refer_copy_IFFT=ifft([phase_refer_copy(1:16)+1 zeros(1,32) phase_refer_copy(17:32)],64);
M1=193;N1=194;
for i=1:64
synsymbol(M1)=real(phase_refer_copy_IFFT(i));
synsymbol(N1)=imag(phase_refer_copy_IFFT(i));
M1=M1+2;
N1=N1+2;
end
for i=161:192
synsymbol(i)=synsymbol(i+128);%synsymbol是帧头信息 是为了同步和解调用的,因为有初始相位
end
%%%%%%%%%%%%%%%%组成帧%%%%%%%%%%%%%%
frame=[synsymbol,infosymbol,infosymbol,infosymbol,infosymbol,infosymbol,infosymbol,infosymbol,infosymbol,infosymbol,infosymbol,infosymbol,infosymbol,infosymbol,infosymbol,infosymbol,infosymbol,];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%完成的DSP部分的组帧部%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -