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