pass data from app designer to .m file
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have a code was written in a .m file (the code below), i need to get the value of some parameters from another app that is created in app designer
i called the .m file in push button callback
the parameters i want to get are:
L
LOD
N
T_GMT
Step
so i write these valuse in edit field and return them to .m file
L=33; %Latitude
LOD=44; %Longitude
N=90; %day number
T_GMT=3; %Time difference with reference to GMT
Step=60; %step each hour
Ds=23.45*sin((360*(N-81)/365)*(pi/180)); % angle of
B=(360*(N-81))/364; %Equation of time
EoT=(9.87*sin(2*B*pi/180))- (7.53*cos(B*pi/180))- (1.5*sin(B*pi/180)); %Equation of time
Lzt= 15* T_GMT; %LMST
if LOD>=0
Ts_correction= (-4*(Lzt-LOD))+EoT; %solar time correction
else
Ts_correction= (4*(Lzt-LOD))+EoT; %solar time correction
end
Wsr_ssi=- tan(Ds*pi/180)*tan(L*pi/180); %Sunrise/Sunset
Wsrsr_ss=acosd(Wsr_ssi); %Sunrise/Sunset hour angle
ASTsr=abs((((Wsrsr_ss/15)-12)*60)); %Sunrise solar time
ASTss=(((Wsrsr_ss/15)+12)*60); %Sunset solar time
Tsr=ASTsr+abs(Ts_correction); %Actual Sunrise time
Tss=ASTss+abs(Ts_correction); %Actual Sunset time
sin_Alpha=[];
for LMT=Tsr:Step:Tss %for loop for the day time
Ts= LMT + Ts_correction; %solar time at each step
Hs=(15 *(Ts - (12*60)))/60; %hour angle at each step
sin_Alpha_i=(sin(L*pi/180)*sin(Ds*pi/180))+(cos(L*pi/180)*cos(Ds*pi/180)* cos(Hs*pi/180)); %altitudeangle
sin_Alpha=[sin_Alpha;sin_Alpha_i]; % store altitude
end
LMT=Tsr:Step:Tss;
sin_Alpha;
Go=1367; %solar constant
Gext=Go*(1+(0.0333*cos(360*N/365))); %available Gext
GextH=Gext*sin_Alpha; %Gex on horizontal surface
plot(LMT,GextH) %plot results
0 commentaires
Réponses (1)
Rik
le 27 Déc 2020
The easy solution is to never use scripts for importants things. Put the code in a function so you can call it from anywhere, including an AppDesigner callback.
Don't forget to write comments that describe what the code is doing. You will not understand this in a year.
function [LMT,GextH]=your_function_name(L,LOD,N,T_GMT,Step)
%One line description goes here
%
%full explanation of what this function does goes here
%set up default values
if nargin<1
L=33; %Latitude
end
if nargin<2
LOD=44; %Longitude
end
if nargin<3
N=90; %day number
end
if nargin<4
T_GMT=3; %Time difference with reference to GMT
end
if nargin<5
Step=60; %step each hour
end
Ds=23.45*sin((360*(N-81)/365)*(pi/180)); % angle of
B=(360*(N-81))/364; %Equation of time
EoT=(9.87*sin(2*B*pi/180))- (7.53*cos(B*pi/180))- (1.5*sin(B*pi/180)); %Equation of time
Lzt= 15* T_GMT; %LMST
if LOD>=0
Ts_correction= (-4*(Lzt-LOD))+EoT; %solar time correction
else
Ts_correction= (4*(Lzt-LOD))+EoT; %solar time correction
end
Wsr_ssi=- tan(Ds*pi/180)*tan(L*pi/180); %Sunrise/Sunset
Wsrsr_ss=acosd(Wsr_ssi); %Sunrise/Sunset hour angle
ASTsr=abs((((Wsrsr_ss/15)-12)*60)); %Sunrise solar time
ASTss=(((Wsrsr_ss/15)+12)*60); %Sunset solar time
Tsr=ASTsr+abs(Ts_correction); %Actual Sunrise time
Tss=ASTss+abs(Ts_correction); %Actual Sunset time
sin_Alpha=[];
for LMT=Tsr:Step:Tss %for loop for the day time
Ts= LMT + Ts_correction; %solar time at each step
Hs=(15 *(Ts - (12*60)))/60; %hour angle at each step
sin_Alpha_i=(sin(L*pi/180)*sin(Ds*pi/180))+(cos(L*pi/180)*cos(Ds*pi/180)* cos(Hs*pi/180)); %altitudeangle
sin_Alpha=[sin_Alpha;sin_Alpha_i]; % store altitude
end
LMT=Tsr:Step:Tss;
sin_Alpha;
%^^^^^^^^
% what is this doing? sin_Alpha is a variable, so this will not do anything (because the ; will supress the printing)
Go=1367; %solar constant
Gext=Go*(1+(0.0333*cos(360*N/365))); %available Gext
GextH=Gext*sin_Alpha; %Gex on horizontal surface
end
5 commentaires
Rik
le 27 Déc 2020
You shouldn't need to search: you can use the examples I posted here. Let me know if you need help anyway.
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!