3 transmitterfunction.m

来自「Here is transmitter function in matlab. 」· M 代码 · 共 59 行

M
59
字号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%  Transmitter function
%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%transmitting
function dataoutput = tr(datainput3,numcar,ifftsize,wordsize)
carspace=1;
interfreq=ifftsize/4; % find the middle of the spectrum
start=interfreq-round(((numcar-1)*carspace/200));
finnal=interfreq+floor(((numcar-1)*carspace/2));
carriers= [start:carspace:finnal]+1;
oppocarriers=ifftsize-carriers+2;  %find the symmtrical spectrum of carriers



numbersym=ciel(length(datainput3)/numcar); % find the total number of symbol per carrier
m=length(datainput3);
%zero padding
database=zeros(1,numbersym*numcar);
for k=1:m
    
    database(k) = datainput3(k); 
end
dataout=reshape(database,numcar,numbersym)';%reshape the data into the number of carriers 
phaserefre=round(rand(1,numcar)*(2^worldsize)+0.5); %generate a random phase ref 
DPSKdata = zeros(size(dataout,1)+1,size(dataout,2));
numbersym=size(dataout,1)+1;    %find the total number of symbol per carrier including phase ref DPSKdata(1,:) = phaserefre;

% ******************
%    DQPSK modulation	
% ******************
for k = 1 :numbersym-1
DPSKdata(k+1, :)=rem((dataout(k,:) + DPSKdata(k,:)-1 ),(2 ^worldsize))+1;
end	
[X,Y] = pol2cart(DPSKdata*(2*pi/(2^worldsize)),ones(size(DPSKdata))); %transform the angel and radius into X Y
 
complex1=X+i*Y; 
complex2=X-i*Y;     % negative spectrum
 
 %%%%%%%%%%%%%%%%%%
% assign spectrum in carriers
%%***************************
signalspec=zeros(numbersym,ifftsize); 
for k=1: numbersym
signalspec(k,carriers)=complex1(k,:);
signalspec(k,oppocarriers)=complex2(k,:);
end
%**********************'*****************************
% IFFT change (change the frequency into time domain)
%***************************************************
for k=1 :numbersym

timesignal(k, :)=ifft(signalspec(k,:)); 
end
[M,N]=size(timesignal);
dataoutput=reshape(timesignal, 1 ,M*N);
I=real(dataoutput);         %divide the transmitting signal into I Q signal seperately Q=imag(dataoutput); 
dataoutput=[ I; Q ];

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?