Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I\'m trying to simulate Range in MATLAB, the following code is giving me the fol

ID: 3644320 • Letter: I

Question

I'm trying to simulate Range in MATLAB, the following code is giving me the following error:

Index exceeds matrix dimensions.

Error in RangeSimulation (line 35)
[Y1,I1] = max(abs(spec(Fs/2+2:Fs+1)));

Here is the code:

clc; clear all; format long e;
% Declare constants
Fs = 40000; % Sampling freruency
T = 1/Fs; % Period
osf = 100;
T0 = 100e-6;
t = (0:T/osf:T0);
w = 2 * pi * 2.4e9; % Angular frequency
fm = 50; df = 330e6;
alpha = .1;
d = 4; % Target distance in m
c = 3e8;
delay = 2 * d / c;
lambda = c / (w / 2 / pi);
dr = c / 2 / df; % Range resolution

% Calculate range
r = 2*pi*df * sawtooth(2*pi*fm*t,0.5);
% r = 2*pi*df * sawtooth(2*pi*fm*t,1);
Tx = cos((w+r).*t);
Yx = alpha * cos((w+r).*(t-delay));
%Rx = awgn(Yx,3); % Add white Gaussian noise
Rx = Yx;
Sx = Tx .* Rx;
tay = taylorwin(length(Sx));
%tay = hamming(length(Sx));
A = tay .* Sx';
X = fftshift(fft(A));
spec = fftshift(fft(Sx));
f = (-Fs/2:1/T0/osf:Fs/2);

% Calculate weighted-mean beat frequency
%fb1 = abs(spec(Fs/2+2:Fs+1))*f(Fs/2+2:Fs+1)';
%fb = fb1 / Fs / 2;
[Y1,I1] = max(abs(spec(Fs/2+2:Fs+1)));
[Y2,I2] = max(abs(X(Fs/(2+2):Fs+1)));
fb1 = f(Fs/2+I1);
fb2 = f(Fs/2+I2);

% Plot the figure
subplot(3,1,1);
plot(f,abs(spec)/Y1); title('No windowing');
title('Normalized Spectrum of Mixed Signal w/ Stationary Target (R = 2 m)');
xlabel('Frequency (Hz)'); ylabel('Magnitude');
% subplot(3,1,1); plot(t,Tx);
% subplot(3,1,2); plot(t,Rx);
% subplot(3,1,3); plot(t,Sx);
subplot(3,1,2);
plot(f,abs(X)/Y2); title('With windowing');
R1 = c * fb1 / 8 / df / fm;
R2 = c * fb2 / 8 / df / fm;
subplot(3,1,3); title('Difference in FFTs');
plot(f,(abs(X)'/Y1)-(abs(spec)/Y1));
a1 = mean(abs(A));
a2 = mean(abs(Sx));

Explanation / Answer

Edit. Highlight your code. Click the "Code" icon. Resubmit. Run it again, with the debugger, to see what the size of all the variables is. Make intermediate variables if you have to, like sf = spec(Fs/2+2:Fs+1) size_of_sf = size(sf)