Azzera filtri
Azzera filtri

I'm trying to run this script in matlab mobile but giving me an error

4 visualizzazioni (ultimi 30 giorni)
Name : persuite_curve_3d.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
close all;
clear;
clc;
GUI = {'Projectile Speed[m/s]: ' , 'Simulation Time[s]: ','Start Position [X;Y]: ','Impact Radius[m]','Time Step: '};
D_ans = {'750','30','[1500;1500]','25','0.02'};
Title = '3D Pursuit Curve';
dims = [1 50];
input = inputdlg(GUI,Title,dims,D_ans);
w = str2double(input{1});
xf = str2double(input{2});
pos = str2num(char(input{3}));
radius = str2num(input{4});
h = str2double(input{5});
Movement = questdlg('Please Select The Movement Type : ','3D Pursuit Curve','Straight Line','Circular Motion','Custom Function','Straight Line');
switch Movement
case 'Straight Line'
GUI = {'Target Speed[X,Y,Z]: ','Start Position [X;Y;Z]: '};
D_ans= {'[300,300,300]','[-2900;-2700;-2500]'};
Title = 'Straight Line';
input = inputdlg(GUI,Title,dims,D_ans);
v = str2num(char(input{1}));
Tpos = str2num(char(input{2}));
T = @(t) [v(1)*t;...
v(2)*t;...
v(3)*t] + [Tpos(1);Tpos(2);Tpos(3)];
case 'Circular Motion'
GUI = {'Target Speed[m/s]: ','Raduis[m]: ','Frequency[hz]','Angular Velocity[\fontsize{15}\omega\fontsize{8}]','Start Position [X;Y;Z]: '};
D_ans= {'250','400','0.8','0.7','[-2500;-2500;-2500]'};
Title = 'Straight Line';
opts.Interpreter = 'tex';
input = inputdlg(GUI,Title,dims,D_ans,opts);
Tpos = str2num(char(input{5}));
T = @(t) roty(45)*rotx(-45)*[str2double(input{2}) * cos(str2double(input{3})*pi*str2double(input{4}) * t);...
str2double(input{2}) * sin(str2double(input{3})*pi*str2double(input{4}) * t);...
str2double(input{1}) * t] + [Tpos(1);Tpos(2);Tpos(3)];
end
dpdt = @(t,p) (w*((T(t) - p)/(norm(T(t)-p))));
pos = [pos(1);pos(2);-0];
[ t , p ] = ode4( dpdt , [0 xf] , pos , h );
Target = T(t(1));
figure('Units','normalized','Position',[0 0 1 1])
hold on
axis([-1 1 -1 1 -1 1] * 3000)
img = imread('sky.jpg');
xImage = [-3000 3000; -3000 3000];
yImage = [+3000 +3000; +3000 +3000];
zImage = [3000 3000; -3000 -3000];
surf(xImage,yImage,zImage,...
'CData',img,...
'FaceColor','texturemap');
xImage = [-3000 -3000; -3000 -3000];
yImage = [+3000 -3000; +3000 -3000];
zImage = [3000 3000; -3000 -3000];
surf(xImage,yImage,zImage,...
'CData',img,...
'FaceColor','texturemap');
img = imread('field.jpeg');
xImage = [-3000 3000; -3000 3000];
yImage = [+3000 +3000; -3000 -3000];
zImage = [-3000 -3000; -3000 -3000];
surf(xImage,yImage,zImage,...
'CData',img,...
'FaceColor','texturemap');
z = plot3(p(1,1),p(2,1),p(1,3),'bo',Target(1,1),Target(2,1),Target(3,1),'ro',p(1),p(2),p(3),'bs');
set(z(1),'MarkerSize',4,'MarkerFaceColor','k','MarkerEdgeColor','b');
set(z(2),'MarkerSize',7,'MarkerFaceColor','r','MarkerEdgeColor','k');
set(z(3),'MarkerSize',15,'MarkerFaceColor','b','MarkerEdgeColor','k');
xlabel('X-AXIS','Editing','off');
ylabel('Y-AXIS','Editing','off');
zlabel('Z-AXIS','Editing','off');
legend('','','','Projectile','Target','Launch Site','');
grid on;
hold off
view(45,45);
curve = animatedline(Target(1),Target(2),Target(3),"Color",'r');
impact = 0;
X = 0;
Y = 0;
Z=0;
for i=1:length(t)
Target = T(t(i));
set(z(1),'XData',p(1,i),'YData',p(2,i),'ZData',p(3,i));
set(z(2),'XData',Target(1),'YData',Target(2),'ZData',Target(3));
addpoints(curve,Target(1),Target(2),Target(3));
drawnow;
if (norm(p(:,i)-Target) <= radius)
impact = 1;
X = p(1,i);
Y = p(2,i);
Z = p(3,i);
break;
end
end
if(impact == 1)
set(z(2),'MarkerSize',15,'MarkerFaceColor','y','MarkerEdgeColor','r','Marker','p','LineWidth',1.75)
set(z(1),'MarkerSize',10,'MarkerFaceColor','y','MarkerEdgeColor','r','Marker','h','LineWidth',1.8)
d = dialog('Position',[800 300 350 150],'Name','Collision Information');
txt1 = uicontrol('Parent',d,...
'Style','text',...
'Position',[40 70 250 30],...
'String',['Collision Position(x,y) : ' ,'(',num2str(sprintf('%.f',X)),';',num2str(sprintf('%.f',Y)),';',num2str(sprintf('%.f',Z)),')'],...
'FontSize',10,...
'Units', 'normalized');
txt2 = uicontrol('Parent',d,...
'Style','text',...
'Position',[40 110 200 15],...
'String',['Collision Time(seconds) : ','(',num2str(t(i)),')'],...
'FontSize',10,...
'Units','normalized');
btn = uicontrol('Parent',d,...
'Position',[140 20 70 25],...
'String','Close',...
'Callback','delete(gcf)');
else
d = dialog('Position',[800 300 350 150],'Name','Collision Information');
txt1 = uicontrol('Parent',d,...
'Style','text',...
'Position',[40 70 250 30],...
'String',("The Projectile didn't hit the target in the simulation time"),...
'FontSize',10,...
'Units', 'normalized');
end
figure('Units','normalized','Position',[0 0 1 1])
subplot(1,2,1);
axis([-1 1 -1 1]*3000)
plot3(p(1,1:i),p(2,1:i),p(3,1:i),'b');
title('Projectile movment');
xlabel('X-AXIS','Editing','off');
ylabel('Y-AXIS','Editing','off');
zlabel('Z-AXIS','Editing','off');
grid on;
target2 = T(t(1:i));
subplot(1,2,2)
plot3(target2(1,:),target2(2,:),target2(3,:),'r')
title('Target movment')
xlabel('X-AXIS','Editing','off');
ylabel('Y-AXIS','Editing','off');
zlabel('Z-AXIS','Editing','off');
grid on;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
the error:
Unable to run the 'persuit_curve_3d'
function, because it is not supported
for MATLAB Mobile.
Caused by:
Error using
matlab.internal.lang.capability.Capability.require
Support for Java user interfaces
is required, which is not available
on this platform.
  9 Commenti
Steven Lord
Steven Lord il 29 Dic 2023
Run this code one line at a time and tell us exactly which line causes the error to be thrown.
I suspect Walter Roberson is correct, that trying to open up a dialog window in a mobile application using inputdlg is not going to work.

Accedi per commentare.

Risposte (1)

Cris LaPierre
Cris LaPierre il 29 Dic 2023
Modificato: Cris LaPierre il 30 Dic 2023
MATLAB Mobile does not support Java user interfaces (your inputdlg's and questdlg's).

Categorie

Scopri di più su Interactive Control and Callbacks in Help Center e File Exchange

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by