transmit.m

来自「一个在matlab环境下的DAB仿真程序源码。内含ofdm收发」· M 代码 · 共 65 行

M
65
字号
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 + =
减小字号Ctrl + -
显示快捷键?