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(' ')