Function will not run or produce answers
1 view (last 30 days)
Show older comments
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
clear all;
clc
function [r, v] = rv_from_coe(coe,mu)
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%{
This function computes the state vector (r,v) from the
classical orbital elements (coe).
mu - gravitational parameter (km^3;s^2)
coe - orbital elements [a e incl Om w TA]
where
a - semimajor axis (km)
e = eccentricity
incl = inclination of the orbit (rad)
Om = longitude of the ascending node (rad)
w = argument of perigee (rad)
TA = true anomaly (rad)
p - semi-latus rectum (km)
h - the magnitude of H (km^2/s)
R3_w - Rotation matrix about the z-axis through the angle w
R1_i - Rotation matrix about the x-axis through the angle i
R3_W - Rotation matrix about the z-axis through the angle Om
Q_pX - Matrix of the transformation from perifocal to geocentric
equatorial frame
rp - position vector in the perifocal frame (km)
vp - velocity vector in the perifocal frame (km/s)
r - position vector in the geocentric equatorial frame (km)
v - velocity vector in the geocentric equatorial frame (km/s)
User M-functions required: none
%}
% ----------------------------------------------
mu= 398600; %km3/s2
coe=[10632 0.3184 0.523409 1.74101 0.981203 2.56632]
a = coe(1);
e = coe(2);
incl = coe(3);
Om = coe(4);
w = coe(5);
TA = coe(6);
p = a*(1-e^2) ;
h = sqrt(mu*p) ;
%...Equations 4.45 and 4.46 (rp and vp are column vectors):
rp = (h^2/mu) * (1/(1 + e*cos(TA))) * (cos(TA)*[1;0;0] + sin(TA)*[0;1;0]);
vp = (mu/h) * (-sin(TA)*[1;0;0] + (e + cos(TA))*[0;1;0]);
%...Equation 4.34:
R3_W = [ cos(Om) sin(Om) 0
-sin(Om) cos(Om) 0
0 0 1];
%...Equation 4.32:
R1_i = [1 0 0
0 cos(incl) sin(incl)
0 -sin(incl) cos(incl)];
%...Equation 4.34:
R3_w = [ cos(w) sin(w) 0
-sin(w) cos(w) 0
0 0 1];
%...Equation 4.49:
Q_pX = (R3_w*R1_i*R3_W)';
%...Equations 4.51 (r and v are column vectors):
r = Q_pX*rp;
v = Q_pX*vp;
%...Convert r and v into row vectors:
r = r';
v = v';
end
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Every time I run my script I get this error, if I change the file name then I get no results in my workspace or command window? Please help, I'm not sure whats wrong.
Error: File: rv_from_coe.m Line: 5 Column: 19
Local function name must be different from the script name.
0 Comments
Answers (1)
madhan ravi
on 30 Sep 2020
Edited: madhan ravi
on 30 Sep 2020
Remove first 2 lines.
Your function doesn’t need any input arguments.
You must call a function not simply clicking the green triangular button.
doc function % a must read
2 Comments
Walter Roberson
on 30 Sep 2020
You have to invoke the function from the command line, in a way that assigns values to variables.
[MyR, MyV] = rv_from_coe();
The function is written to accept arguments, but there is no point in passing any arguments to the function as the function overwrites the variables involved .
See Also
Categories
Find more on Data Import and Analysis in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!