www.pudn.com > RadarSignals.rar > cw_sgnl.m


% cw_sgnl.m - prepares a periodic signal repeated 16 times
% written by Nadav Levanon
%for use with "cross_ambfn2.m" plotting code

sig_flag=input(' Signal: Frank16=0, P4=1, Golomb15=2, sinusoidal-FM=3, triangular-FM=4, sawtooth-FM=5;  = ? ' );

if sig_flag==0
    f1=[0 0 0 0 0 .5 1 -.5 0 1 0 1 0 -.5 1 .5];
    elseif sig_flag==1
        mp4=input(' code length = ? ');
        k=1:mp4;
        f1=-1/mp4*(k-1).^2+(k-1);
    elseif sig_flag==2
        alfa=acos(-7/8);
        f1=[0 0 0 0 alfa alfa alfa 0 alfa alfa 0 0 alfa 0 alfa]./pi;
        mp4=15;
    elseif sig_flag==3
        df_fm=input('Df/fm= ? ');
        mp4=input('frequency vector length = ? ');
        k=1:mp4;
        f1= 0.5/mp4*df_fm*sin(2*pi/mp4*(k-1));  % this is frequency not phase
    elseif sig_flag==4
       df_tr=input('Df*Tr= ? ');
        mp4=input('frequency vector length (even) = ? ');
        k1=1:mp4/2;  k2=mp4/2+1:mp4;
        f1_a=2/mp4^2*df_tr*(k1-mp4/4);
        f1_b=-2/mp4^2*df_tr*(k2-3*mp4/4);
        f1=[f1_a  f1_b];
    elseif sig_flag==5
       df_tr=input('Df*Tr= ? ');
        mp4=input('frequency vector length (odd) = ? ');
        k1=1:mp4;  
        f1=-1/mp4/(mp4-1)*df_tr*(-k1+(mp4+1)/2);
end

f4=[f1 f1 f1 f1];
f4=[f4 f4 f4 f4];  %  N=16
lf=length(f4);
lfsingle=length(f1);
f4_3=[f4 f4 f4];

u_amp0=zeros(size(f4));
u_amp1=ones(size(f4_3));

weight_flag=input(' Inter-period weight: uniform=0, Hamming=1,  Hann=2; = ? ');
if weight_flag==0
    u_amp_mid=ones(1,lf);
elseif weight_flag==1
    u_amp_mid=hamming(lf)';
elseif weight_flag==2
    u_amp_mid=hann(lf)';
end
int_weight_flag=input(' Intra-period weight: uniform=0, Hamming=1,  Hann=2;  = ?  ');
if int_weight_flag==1
        rw=hamming(lfsingle)';
        rwn=[rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw];
        u_amp_mid=u_amp_mid.*rwn;
elseif int_weight_flag==2
        rw=hann(lfsingle)';
        rwn=[rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw];
        u_amp_mid=u_amp_mid.*rwn;
end

u_amp_ref=[ u_amp0   u_amp_mid  u_amp0];

sig_trans=u_amp1.*exp(j*pi*f4_3);
sig_ref=u_amp_ref.*exp(j*pi*f4_3);

t_freq=0:length(f4_3)-1;
if sig_flag==3
    sig_trans=u_amp1;
    sig_ref=u_amp_ref;
end

% Adding doppler equivalent phase ramp in the reference phase slope

dop_flag=input('Add Doppler compensation  (no = 0, yes = 1)  = ? ');
if dop_flag==1
    mult=input(' Dphi*M/pi = ? ');
    dphi=mult*pi/length(f1);
    num_phase_steps=0:length(f4_3)-1;
    phase_ramp=dphi*num_phase_steps;
    sig_ref=sig_ref.*exp(j*phase_ramp);
end

disp(' ')
disp('  Call "cross_ambfn2" ')
disp('  For "signal elements" use "sig_trans" and for "2nd signal elements" use "sig_ref"  ')
disp('  If an FM signal: for freq coding use "f4_3" ')
disp(' ')
disp('  To plot two periods of the Periodic Cross Amb. Func.  ')
disp('  set maximal delay ... = 0.024 ')
disp(' ')