can you change the below code to produce a 3 by 3 matrix of plots where the first plot is at 0 time with every other plot is 2 second apart with every plot only showing the time step at that time only and remove the animation part of the below code to make the process quicker and make sure that the matrix has two titles one for the x-axis title and one for the y-axis and show the matrix plot with out saving any intermediant plots to disk and every time step shows different position also make sure that the simulation time will generate enough plot and if not increase it and use a seperate variable to keep track of the ith plot then display all of them at once when the simulation is over and use a custom multiplication function when multiplying any two terms instead of the * operator also make sure that the car only be represent by one and only one color in the matrix of plots you can change the size of the matrix to make sure there is enough subplots position to accomadate the 2 second apart time steps the final plot should be land width (y-axis) vs distance travelled (x-axis) 
% Define simulation parameters
dt = 0.01; % Time interval
T = 30; % Total simulation time
time = 0:dt:T; % Time vector

% Define initial conditions
N_cars = 10; % Number of cars
v0 = 120 / 3.6; % Desired speed in m/s
s0 = 2; % Minimum gap between cars in m
T = 1.5; % Safe time headway
a_max = 0.3; % Maximum acceleration in m/s^2
b_max = 2; % Comfortable braking deceleration in m/s^2
L = [4.5, 5, 4.5, 5, 4.5, 5, 4.5, 5, 4.5, 5]; % Car length vector
W = [2, 2.2, 2, 2.2, 2, 2.2, 2, 2.2, 2, 2.2]; % Car width vector
x = cumsum([0, 10ones(1,N_cars-1)]); % Car positions
v = v0ones(1,N_cars); % Car speeds
v_safe = v0ones(1,N_cars); % Safe speeds
v_des = v0ones(1,N_cars); % Desired speeds
v_alpha = v; % Actual speeds
v_max=240/3.6 ;
% Set colors for plotting
colors = hsv(N_cars);


% Define model parameters
tau_k = 0.5; % Safe time headway factor
eta = 0.5; % Maximum deceleration
% Run simulation
for i = 2:length(time)
% Calculate distance to lead car
dist = diff(x) - L(1:N_cars-1) - L(2:N_cars);

% Update speeds using Krauss model
for j = 1:N_cars
% Calculate safe velocity based on distance and model equations
if j == 1
v_safe(j) = v(j) + (dist(j) - v(j)*T)/tau_k;
else
v_safe(j) = v(j) + (dist(j-1) - v(j)T)/tau_k;
end
v_safe(j) = max(v_safe(j),0);

% Calculate desired velocity based on safe velocity, maximum velocity, and maximum acceleration
v_des(j) = min(min(v_max, v_alpha(j) + a_maxdt), v_safe(j));

% Update velocity based on desired velocity and maximum deceleration
if j ~= N_cars
v(j+1) = max(0, min(v(j+1), v(j) + (v_des(j) - v(j))dtb_max/L(j)));
end

% Update position based on actual velocity
x(j) = x(j) + v_alpha(j)*dt;
end

% Animate results
clf;
hold on;
for j = 1:N_cars
rectangle(‘Position’,[x(j)-L(j)/2,(j-1)*2,L(j),2],‘FaceColor’,colors(j,:),‘Curvature’,j/N_cars);
end
xlim([0, max(x)+50]);
ylim([0, sum(W)]);
xlabel(‘Distance (m)’);
ylabel(‘Lane width (m)’);
title(sprintf(‘Time = %0.1f s’, time(i)));
drawnow;
end
