📄 transmit.asv
字号:
function [data_out]=transmit(N,L,len,num,symnum,Zeronum,z0)
zk(1,:)=z0;
z1=[];
zk_symbol=[];
zk_frame=[];
ofdm_temp=[];
ofdm_sym=[];
ofdm_frame=[];
m=Zeronum ; %zeros num for phase reference symbol insert
insert_front=zeros(1,m) ; %insert zeros before 1536
insert_back=zeros(1,m) ;%insert zeros after 1536
data=randperm(len*3); %产生随机数据源
data=round((mod(data(1:len),2)-0.5)*2); %+1,-1
for s=1:symnum;
z1(s,[1:num])=(data((s-1)*num+1:s*num)+j*data((s+symnum-1)*num+1:(s+symnum)*num))./sqrt(2); % data symbol
zk(s+1,[1:num])=zk(s,:).*z1(s,:); % DQPSK
end;
for s=1:symnum+1;
zk_symbol(s,:)=[insert_front zk(s,:) insert_back]; % symbol=2552 insert zero
zk_frame=[zk_frame zk_symbol(s,:)]; %串行数据 一桢
%------------------------------------------------------------------------------- %
%ifft
ofdm(s,:)=sqrt(N)*ifft(zk_symbol(s,:));
ofdm_temp=[ofdm_temp ofdm(s,:)]; %串行数据,不含循环前缀
ofdm_sym(s,:)=[ofdm(s,N-L+1:N) ofdm(s,:)]; %加循环前缀
ofdm_frame=[ofdm_frame ofdm_sym(s,:)]; %最终的串行数据
end;
data_out=ofdm_frame;
%ofdm_sym=z1;
%Zk=zk;
%zk_power=sum(abs(zk_frame).^2)/length(zk_frame); %Eb
%ofdm_temp_power=sum(abs(ofdm_temp).^2)/length(ofdm_temp); % 循环前缀前的Eb
%signal_power=sum(abs(ofdm_frame).^2)/length(ofdm_frame); %循环前缀后的Eb
%ofdm_phase=ofdm_sym(1,:);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -