📄 ofdm_optimal_tx0.m
字号:
binary = InputPort1.Sequence;
RF_signal = InputPort2.Sampled.Signal;
RF_length = length(RF_signal); %RF_length=1024
Bitrate = Parameter0;%2.5GHz
OutputPort1 = InputPort1;
Cyclic_Prefix = 1024;
Bitrate = Parameter0;%2.5GHz
QAM_16_mapper = [-3 -1 3 1]/(10^0.5);
%==========================================================================
% Symbol Mapper
%==========================================================================
Mapper_input = binary;
for i=1:4:length(Mapper_input)
Mapper_re((i+3)/4)=QAM_16_mapper(sum(Mapper_input(i:i+1)*[2 1]')+1);
Mapper_im((i+3)/4)=QAM_16_mapper(sum(Mapper_input(i+2:i+3)*[2 1]')+1);
end
Mapper_output1 = complex(Mapper_re,Mapper_im);
Mapper_output=Mapper_output1;
%==========================================================================
% Pilot Insert
%==========================================================================
Pilot_Insert_input=Mapper_output;
Pilot_Insert_output(1:16)=Pilot_Insert_input(1:16);
Pilot_Insert_output(17)=1+0i;
Pilot_Insert_output(18:49)=Pilot_Insert_input(17:48);
Pilot_Insert_output(50)=-1+0i;
Pilot_Insert_output(51:82)=Pilot_Insert_input(49:80);
Pilot_Insert_output(83)=1+0i;
Pilot_Insert_output(84:115)=Pilot_Insert_input(81:112);
Pilot_Insert_output(116)=-1+0i;
Pilot_Insert_output(117:148)=Pilot_Insert_input(113:144);
Pilot_Insert_output(149)=-1+0i;
Pilot_Insert_output(150:181)=Pilot_Insert_input(145:176);
Pilot_Insert_output(182)=1+0i;
Pilot_Insert_output(183:214)=Pilot_Insert_input(177:208);
Pilot_Insert_output(215)=-1+0i;
Pilot_Insert_output(216:247)=Pilot_Insert_input(209:240);
Pilot_Insert_output(248)=1+0i;
Pilot_Insert_output(249:264)=Pilot_Insert_input(241:256);
%==========================================================================
% Guard channel insert
%==========================================================================
Guard_Insert_input = Pilot_Insert_output;
Guard_Insert_output(1:124)=0;
Guard_Insert_output(125:388)=Guard_Insert_input(1:264);
Guard_Insert_output(389:512)=0;
%==========================================================================
% IFFT
%==========================================================================
IFFT_input = Guard_Insert_output;
IFFT_output = ifft(IFFT_input); %length(IFFT_output)=512
%==========================================================================
% Up_sampling
%==========================================================================
DSM_input=IFFT_output;
DSM_input1=zeros(1,length(DSM_input)*4);
DSM_input1(1:4:end)=DSM_input;
DSM_input1_fft=fft(DSM_input1);
DSM_input1_fft(513:end-512)=0;
DSM_input2=ifft(DSM_input1_fft);
DSM_output=DSM_input2;
%==========================================================================
% Cyclic Prefix Add
%==========================================================================
%CP_add_input = DSM_output;
%CP_add_output(1:Cyclic_Prefix) = CP_add_input((length(CP_add_input)-Cyclic_Prefix+1):length(CP_add_input));
%CP_add_output(Cyclic_Prefix+1:(length(CP_add_input)+Cyclic_Prefix)) = CP_add_input(1:length(CP_add_input));
%==========================================================================
%==========================================================================
% finish OFDM synbol
%==========================================================================
%==========================================================================
Signal_ouput1 = DSM_output;
Signal_output = interp(Signal_ouput1,32);
OutputPort1=InputPort2;
for i=1:RF_length
OutputPort1.Sampled.Signal(i)=Signal_output(i);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -