# Matlab Program to Implement Range Equations Assignment Solution

June 29, 2024
Prof. Liam
🇺🇸 United States
Programming
Prof. Liam Payne, a seasoned expert in programming, holds a Ph.D. from Harvard University, United States, and boasts 18 years of comprehensive experience. His proficiency lies in delivering top-tier solutions for intricate programming assignments.
Key Topics
• Instructions
• Requirements and Specifications
Tip of the day
News

## Instructions

Objective
Write a program to implement range equations in matlab.

## Requirements and Specifications

Source Code

% EE 7330 Modern Radar Theory% Spring 2022 - Project 00% Team 5% Trevor Scarberry, Matthew Scharf, Siddhant Sharmaclcclear allclose all%% Parameters%variablesPtx = 150e3;Fc = 9.4e9;tau = 1.2e-6;PRF = 2e3;PRI = 1/PRF;Gtx_dB = 45.25;Tdw = 18.3e-3;F0_dB = 2.5;Ltx_dB = 3.1;Lrx_dB = 2.4;Lsp_dB = 3.2;RT_km = 5:105;RT = RT_km*1000;Latm_dB = .16*2*RT_km;sigma1_dB = 0;sigma2_dB = -10;SNRM_dB = 12;% vT = [150 250 400] * 0.5144447;vT = [150 250 400];c = 3e8;kB = 1.38e-23;T = 290;B = 1/tau;lambda = c/Fc;Rtgt_km = [25 50 70]; %target ranges, kmRtgt = Rtgt_km * 1000;Vtgt = [-15, 5, -10]; %Target velocities, m/s%convert dB to absGtx = 10^(Gtx_dB/10);F0 = 10^(F0_dB/10);Ltx = 10^(Ltx_dB/10);Lrx = 10^(Lrx_dB/10);Lsp =10^(Lsp_dB/10);Latm = 10.^(Latm_dB/10);SNRM = 10^(SNRM_dB/10);sigma1 = 10^(sigma1_dB/10);sigma2 = 10^(sigma2_dB/10);np = floor(Tdw * PRF);M = np;L = Ltx*Lrx*Lsp.*(Latm);N = kB*B*T*F0;SNR_M_arr_dB = ones(1,length(RT)) * SNRM_dB; % Need array to plot%% 1.a reproduce curves for SNRM versus rangePrx = (Ptx*Gtx^2*lambda^2)./((RT).^4*(4*pi)^3.*L); % here we calculate prc according to equation (2), but without the standard deviationsSNR0 = Prx./N;% Here we complete the calculations of Prx and SNR for each standard% deviation (positive and negative)Prx1 = Prx*sigma1;SNR1 = M*Prx1/(N);Prx2 = Prx*sigma2;SNR2 = M*Prx2/(N);figure;plot(RT_km, 10*log10(SNR1), '-b', 'LineWidth', 2);hold on;plot(RT_km, 10*log10(SNR2),'-k', 'LineWidth', 2);hold on;plot(RT_km, SNR_M_arr_dB,'r--', 'LineWidth', 2);ylabel('SNR (dB)');xlabel('Range (km)');title('SNR vs Range')legend('\sigma_1 = 0 dBsm ', '\sigma_2 = -10 dBsm','Threshold');grid on;xlim([min(RT_km) max(RT_km)]);%% 1.b monte carlo sim% we simulate 1000 events of randomnessfor n = 1:1000RCS1 = random('exp',sigma1,[M 1]);RCS2 = random('exp',sigma2+1,[M 1]);y1a(n,:) = sum(RCS1)*SNR1/M;y2a(n,:) = sum(RCS2)*SNR2/M;end%obtain mean and standard deviationy1avg = mean(y1a,1);y1std = std(y1a,1,1);y2avg = mean(y2a,1);y2std = std(y2a,1,1);%convert to db, create data for plotsy1avg_dB = 10*log10(y1avg);y1avg_plus_std = 10*log10(y1avg+y1std);y1avg_minus_std = 10*log10(y1avg-y1std);y2avg_dB = 10*log10(y2avg);y2avg_plus_std = 10*log10(y2avg+y2std);y2avg_minus_std = 10*log10(y2avg-y2std);%plotfigure;hold on;plot(RT_km,y1avg_dB)plot(RT_km,y1avg_plus_std)plot(RT_km,y1avg_minus_std)plot(RT_km, SNR_M_arr_dB,'r--', 'LineWidth', 2);plot(RT_km,y2avg_dB)plot(RT_km,y2avg_plus_std)plot(RT_km,y2avg_minus_std)xlabel('Range[km]')ylabel('SNR[dB]')title('SNR vs Range (n=1000)')legend('\sigma_1 = 0 dBsm ', '\sigma_2 = -10 dBsm','Threshold');grid on;xlim([min(RT_km) max(RT_km)]);%% Part 2 - Range-Doppler Map% here we calculate the signal amplitudes according toi equation (17.2) on% the bookA = sqrt(Prx1);% The next 3 lines calculates the amplitudes at each of the desired% locations inside the range of studyA1= sqrt((Ptx*Gtx^2*sigma1*lambda^2)./((Rtgt(1))^4*(4*pi)^3.*L));A2= sqrt((Ptx*Gtx^2*sigma1*lambda^2)./((Rtgt(2))^4*(4*pi)^3.*L));A3= sqrt((Ptx*Gtx^2*sigma1*lambda^2)./((Rtgt(3))^4*(4*pi)^3.*L));% The next line calculates the transmited frequency according to equation% (17.1) on the bookFd = 2*Vtgt/lambda;%resolution = 1/(PRI*M);% y1 = complex(zeros(length(RT_km),M));% y2 = complex(zeros(length(RT_km),M));% y3 = complex(zeros(length(RT_km),M));%% for l = 1:length(RT_km)% for m = 1:M%% y1(l,m) = A(l)*exp(-1i*4*pi*Rtgt(1)/lambda)*exp(1i*2*pi*m*PRI*Fd(1));% y2(l,m) = A(l)*exp(-1i*4*pi*Rtgt(2)/lambda)*exp(1i*2*pi*m*PRI*Fd(2));% y3(l,m) = A(l)*exp(-1i*4*pi*Rtgt(3)/lambda)*exp(1i*2*pi*m*PRI*Fd(3));% end% end% y0 = y1+y2+y3;% Y =fftshift(fft(y0,[],2));% Y1 = fftshift(fft(y1,[],2));% Y2 = fftshift(fft(y2,[],2));% Y3 = fftshift(fft(y3,[],2));% We create the pulse-Doppler data matrix filled with zerosy1 = complex(zeros(length(RT_km),M));% Now, for every bin l0 and for every bin on the range M, we calculate% the spatial Doppler signalfor l = 1:length(Rtgt_km)for m = 1:Midx = find(RT_km==Rtgt_km(l)); % One of the problems were here. The variable y1 has the same number% of rows as elements in the vector% RT_km, so when the values were% changed for every value in% Rtgt_km, the indices used were% wrongy1(idx,m) = A1(l)*exp(-1i*4*pi*Rtgt_km(l)/lambda)*exp(1i*2*pi*m*PRI*Fd(l));endend% Now, we apply the fast fourier transform to the matrix and we obtain a% complex number X + jYY1 = fftshift(fft(y1, [], 2), 2); % Another fix was done here. The fftshift and fft% functions were called with% incorrect arguments for number of% dimensions% Y2 = fftshift(fft(y2,[],2));% Y3 = fftshift(fft(y3,[],2));% Here we define the range of frequencies (x) and the space (y)x = linspace((-PRF/2),(PRF/2),M);y = linspace(min(RT_km),max(RT_km),length(RT_km));%% %plots% figure% hold on% subplot(1,3,1)% pcolor(x,y,abs((Y1)))% title('range-doppler plot v = 150')% xlabel('Doppler Freq (Hz)')% ylabel('range(km)')% shading interp% colormap jet% colorbar;% subplot(1,3,2)% pcolor(x,y,abs((Y2)))% title('range-doppler plot v = 250')% xlabel('Doppler Freq (Hz)')% ylabel('range(km)')% shading interp% colormap jet% colorbar;% subplot(1,3,3)% pcolor(x,y,abs((Y3)))% title('range-doppler plot v = 400')% xlabel('Doppler Freq (Hz)')% ylabel('range(km)')% shading interp% colormap jet% colorbar;figurehold onpcolor(x,y,abs(Y1))title('range-doppler plot')xlabel('Doppler Freq (Hz)')ylabel('range(km)')xlim([-PRF/2,PRF/2]);ylim([min(RT_km), max(RT_km)]);shading interpcolormap jetcolorbar;% figure;% subplot(3,1,1)% plot(x,abs(Y1))% xlabel("Doppler Freq (Hz)");% ylabel("Range (km)");% % xlim([min(RT_km), max(RT_km)]);% grid on;% subplot(3,1,2)% plot(x,abs(Y2))% xlabel("Doppler Freq (Hz)");% ylabel("Range (km)");% % xlim([min(RT_km), max(RT_km)]);% grid on;% subplot(3,1,3)% plot(x,abs(Y3))% xlabel("Doppler Freq (Hz)");% ylabel("Range (km)");% % xlim([min(RT_km), max(RT_km)]);% grid on;

## Related Samples

Welcome to our Programming Assignments sample section, where learning meets excellence. Explore diverse programming challenges solved comprehensively for students. From introductory tasks to intricate projects, each example offers clear, step-by-step solutions. Enhance your programming skills with practical code examples covering various languages and concepts, tailored to enrich your learning experience.