Only one function doesn't work only after the app designer program is compiled
Show older comments
When I try to run directly on app designer, it works completely fine but when I compile it as a standalone app, it just gets stuck on one function. The sturtup function still works fine but when it comes to the this function it just freezes.
First I thought that it might be "first time running an exe file issue" and it needs some time. So, I left it for hours and still nothing happened. Then to be sure that this function is the problem I gave it some values instead of using the function and again it worked fine fine!!
The function is just a 4input-3output function with a for loop and 3 integral at the end. and It's called by pressing a Button.
methods (Access = private)
%--------------------------------------------------------------------------------------------------------
function [Bx,By,Bz] = Magnetic_field_solenoid_spherical1(~,r0,theta0,phi0,I)
mu0=4*pi;
B=5;
n=50;
dBxt=0;
dByt=0;
dBzt=0;
syms phi z0
%%%some maths...
z01=linspace(-B,B,n);
for z02= z01
R_distance2=R_distance1(phi,z02);
Cross_result2=Cross_result1(phi,z02);
dbx=mu0.*I.*Cross_result2(1,1)/(4.*pi.*R_distance2.^3);
dby=mu0.*I.*Cross_result2(1,2)/(4.*pi.*R_distance2.^3);
dbz=mu0.*I.*Cross_result2(1,3)/(4.*pi.*R_distance2.^3);
dBxt=dBxt+dbx;
dByt=dByt+dby;
dBzt=dBzt+dbz;
end
if dBxt~=0 && isnan(dBxt)==0
Bxt=matlabFunction(dBxt);
Bx = integral(Bxt,0,2*pi);
else
Bx=0;
end
if dByt~=0 && isnan(dByt)==0
Byt=matlabFunction(dByt);
By = integral(Byt,0,2*pi);
else
By=0;
end
if dBzt~=0 && isnan(dBzt)==0
Bzt=matlabFunction(dBzt);
Bz =integral(Bzt,0,2*pi);
else
Bz=0;
end
end
%--------------------------------------------------------------------------------------------------------
function [Bx,By,Bz] = Magnetic_field_solenoid_cartesian1(app,x,y,z,I)
phi = atan2(y,x);
theta= atan2(sqrt(x.^2 + y.^2),z);
r = sqrt(x.^2 + y.^2 + z.^2);
[Bx,By,Bz] = Magnetic_field_solenoid_spherical1(app,r,theta,phi,I);
end
end
Only the second function (Magnetic_field_solenoid_cartesian1) is used directly.
[Bx,By,Bz] = Magnetic_field_solenoid_cartesian1(app,x,y,z,I);
Accepted Answer
More Answers (1)
Steven Lord
on 31 Jan 2020
syms phi z0
Depending on what "some maths" is, you may be able to perform the symbolic calculations in MATLAB and generate a matlabFunction that you then include in your application for use when your application is compiled. The isdeployed function may be of use to you in this case.
Categories
Find more on Common Operations 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!