How do I use output values from a function to plot those values in a script
Mostrar comentarios más antiguos
I want to call my function (in the script) and plot the vectors from specfic outputs of the function.
Function code: (this seems to be working perfectly as it is meant to output a time, velocity, and mass vector given: delt (step size) and t_end (ending time).
function [t,m,v] = rocket_euler(delt,t_end) %rocket_euler solves for t,v,m vectors using Euler's method
g = 9.81; %gravity (m/s^2)
c = 25000; %thrust constant (m/s)
t = 0:delt:t_end; %time vector from 0 to t_end seconds
t(1) = 0; %initial time set to 0 (s)
m(1) = 1000000; %initial mass of fuel (kg)
v(1) = 0; %initial velocity of rocket (m/s)
for ii=1:length(t)-1
dmdt = -4000; %fuel burn rate (kg/s)
m(ii+1) = m(ii) + (dmdt*delt); %update law for Euler's Method
dvdt = -g - ((c*dmdt)/(m(ii))); %solve given formula for dvdt or acceleration
v(ii+1) = v(ii) + (dvdt*delt); %update law for Euler's Method
end
end
Here is my script: (120s is always the value used for t_end while delt (step size) changes from 60 to 30 to 15 and to 5) I want to plot the different lines it makes (due to changes in step size) on a single plot.
clc; clear; %clears workspace and command window
plot(t = rocket_euler(60,120),v = rocket_euler(60,120),'.-','color',[0 0 1],'Marker','*','markersize',15,'linewidth',1.5) %plot t vs v
legend('Step Size: 60s'); %step size of 60s
hold on %prevent overwrite of plot
plot(t = rocket_euler(30,120),v = rocket_euler(30,120) ,'.-','color',[0 1 0],'Marker','x','markersize',15,'linewidth',1.5) %plot t vs v
legend('Step Size: 30s'); %step size of 30s
hold on %prevent overwrite of plot
plot(t = rocket_euler(15,120),v = rocket_euler(15,120) ,'.-','color',[1 0 0],'Marker','o','markersize',15,'linewidth',1.5) %plot t vs v
legend('Step Size: 15s'); %step size of 15s
hold on %prevent overwrite of plot
plot(t = rocket_euler(5,120),v = rocket_euler(5,120) ,'.-','color',[0 1 1],'Marker','+','markersize',15,'linewidth',1.5) %plot t vs v
legend('Step Size: 5s'); %step size of 5s
xlabel('t (seconds)') %add x-label
ylabel('v (m/s)') %add y-label
t = rocket_euler(60,120),v = rocket_euler(60,120)
The above snippet of code is where I believe I am going wrong. Same for each line that begins with "plot(..."
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Programming en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!