How can I refer to a variable, defined in one .m file, within a function defined in another?
Show older comments
I define a mixed cell in KSP_run.m:
%%Define celestial body characteristics and scientific constants
%Body Eq. Radius Mass R. Period SOI
bodies = {'The Sun' 2.616e+08 1.757e+28 4.32e+05 Inf ;
'Moho' 2.5e+05 1.757e+28 4.32e+05 9.647e+06 ;
'Eve' 7e+05 1.224e+23 8.046e+04 8.5109e+07 ;
'Gilly' 1.3e+04 1.242e+17 2.82e+04 1.26e+05 ;
'Kerbin' 6e+05 5.292e+22 2.1549e+04 8.4159e+07 ;
'Mun' 2e+05 9.76e+20 1.3896e+05 2.43e+06 ;
'Minmus' 6e+04 2.646e+19 4.038e+04 2.247e+06 ;
'Duna' 3.2e+05 4.515e+21 6.546e+04 4.7922e+07 ;
'Ike' 1.3e+05 2.782+20 6.546e+04 1.05e+06 ;
'Dres' 1.38e+05 3.219e+20 3.48e+04 3.2833e+07 ;
'Jool' 6e+06 4.233e+24 3.6e+04 2.445985e+09 ;
'Laythe' 5e+05 2.94e+22 5.298e+04 3.724e+06 ;
'Vall' 3e+05 3.109e+21 1.0596e+05 2.306e+06 ;
'Tylo' 6e+05 4.233e+22 2.1192e+05 1.0857e+07 ;
'Bop' 6.5e+04 3.726e+19 5.445e+05 1.221e+06 ;
'Pol' 4.4e+04 1.081e+19 9.0186e+05 1.042e+06 ;
'Eeloo' 2.1e+05 1.115e+21 1.946e+04 1.19083e+08 };
G = 6.6741e-11;
I define the function KSP_bod in KSP_bod.m:
%%Pick a celestial body and define its parameters.
function [R,M,T,SOI] = KSP_bod()
body = input('Please enter a celestial body to focus on: ','s');
row = find(strcmp(bodies,body));
R = bodies(row,2);
M = bodies(row,3);
T = bodies(row,4);
SOI = bodies(row,5);
end
KSP_bod.m is called immediately after bodies and G are defined in KSP_run.m:
[R,M,T,SOI] = KSP_bod();
It seems that KSP_bod.m does not recognise the existence of bodies.The following issue occurs:
Undefined function or variable 'bodies'.
Error in *KSP_run* (line 3)
row = find(strcmp(bodies,body));
Error in *KSP_run* (line 24)
[R,M,T,SOI] = KSP_bod();
I believe the issue is scope-related but do not know how to fix it. Referring to bodies outside of KSP_bod.m (e.g. by typing:
bodies
into the command window) works perfectly fine.
Accepted Answer
More Answers (0)
Categories
Find more on MATLAB 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!