How to delete last value in the plot?

3 views (last 30 days)
Hi all, just a quick question I have the following code, which plots the trajectory of the aircraft, I have added a 0.15s pause at the end of the for loop for animation sake. My problem is that when the "Animation is running it plots the last value as 0 which means there is always a line going to the initial condition (Starting point) any idea how to fix it?" Any help would be much appreciated.
clc; clear all; close all
%Aircraft parameters
g=9.80665;
m=41000;
W = m*g;
Cd0 = 0.02
S=120%m^2
b=34 %m
AR=b^2/S
ef=0.82; % Efficiency Factor
K=0.03 % combined induced drag factor, = 𝑘 ∕ (𝜋 𝐴𝑅)
Ta = 110000; %Thrust Available
Tp=0.7; %Thrust Percentage
Tu=Ta*Tp; % (Thrust Used)
Cl=sqrt((pi()/3)*ef*AR*Cd0);
Cd = K+Cd0*Cl^2
%Cd=Cd0+((Cl^2)/(pi()*ef*AR));
tf = 60; %Final time
dt = 1; %Time step
t = 0:dt:tf;
V0 = 40; %Initial Velocity
X0 = 0; %Initial Displacement
h0 = 0; %Initial Height
gamma0 = 0.0872665 % 5deg initial climb.
%Pre-Fill with zeros in order to avoid buildup in the loop.
V = zeros(1,length(t))
V(1) = V0; % Initial velocity in dt frame
X = zeros(1,length(t))
X(1) = X0; % Initial X displacement in dt frame
h = zeros(1,length(t));
h(1) = h0; %Initial h displacement in dt frame
gamma = zeros(1,length(t));
gamma(1) = gamma0; %Initial gamma in dt frame
for n=2:length(t)
rho = (20-h(n-1)/1000)/(20+h(n-1)/1000)*1.225;
D = Cd*S*0.5*rho*V(n-1)^2;
V(n) = V(n-1)+((Tu-D-W*sin(gamma(n-1)))/m)*dt;
ROC = ((Tu*V(n)-D*V(n))/W);
gamma(n)= gamma(n-1)+asin(ROC/V(n));
X(n) = X(n-1)+V(n)*dt*cos(gamma(n));
h(n) = h(n-1)+V(n)*dt*sin(gamma(n));
pause(0.15)
plot(X,h);
end
%% equation checks
rhotest= (20-h(61)/1000)/(20+h(61)/1000)*1.225;
tst2=((Tu-D-W*sin(gamma(61)))/m)*dt;
%V(n) = V(n-1)+(1/m)*(Ta-D-W*sin(gamma(n-1)));
tst=(1/m)*(Tu-D-W*sin(gamma(1)));
%% Plots
plot(X,h);
xlabel('Distance (m)')
ylabel('Altitude(m)')
figure;
plot(gamma,t);

Accepted Answer

Walter Roberson
Walter Roberson on 12 Oct 2021
X = zeros(1,length(t))
X(1) = X0; % Initial X displacement in dt frame
h = zeros(1,length(t));
You are pre-allocating X and h to maximum length. You loop writing more and more values into them, and at each step you
plot(X,h);
but that asks to plot all of X against all of h -- including plotting the still-zero parts that you have not written into yet.
You should instead only plot up to point n
plot(X(1:n), h(1:n))
  1 Comment
Ali Khabibulayev
Ali Khabibulayev on 12 Oct 2021
That is fantastic, thank you very much!

Sign in to comment.

More Answers (0)

Products


Release

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!