How to delete last value in the plot?

11 visualizaciones (últimos 30 días)
BioZ
BioZ el 12 de Oct. de 2021
Comentada: BioZ el 12 de Oct. de 2021
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);

Respuesta aceptada

Walter Roberson
Walter Roberson el 12 de Oct. de 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 comentario
BioZ
BioZ el 12 de Oct. de 2021
That is fantastic, thank you very much!

Iniciar sesión para comentar.

Más respuestas (0)

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by