WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

deutsch HELP ! Definieren einer Funktion

 

pseudo
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 03.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.09.2016, 14:02     Titel: deutsch HELP ! Definieren einer Funktion
  Antworten mit Zitat      
hello ,

I use a Matlab code but i have a serious problem . one function (
Code:
PGI_hexapode
) is not mentioned in the memory . I can't speak with the redactor of the code (it's a 2006 code)

Can you help me ?

Ich benutze einen Matlab-Code, aber ich habe ein ernstes Problem. eine Funktion (
Code:
PGI_hexapode
) ist nicht im Speicher erwähnt. Ich kann nicht mit dem Redaktor des Codes sprechen (2006 code)

------
The fonction is just in one line
Code:
[art,Qhex,Phex] = PGI_hexapode(pos,HD,dRcorps,Qcorps);


die Funktion ist nur in einer Linie
Code:
[art,Qhex,Phex] = PGI_hexapode(pos,HD,dRcorps,Qcorps);


-----
It's now the code
Es ist jetzt der Code

Code:
clear all; clc; close all; digits(25);
%-------------------------------%
% Initialisation des parametres
%-------------------------------%
% Force de contact au pattes
syms NAvGx NAvGy NAvGz real ;
NAvG = [NAvGx; NAvGy; NAvGz];
syms NCeDx NCeDy NCeDz real ;
NCeD = [NCeDx; NCeDy; NCeDz];
syms NArGx NArGy NArGz real ;
NArG = [NArGx; NArGy; NArGz];
%-------------------------------%
%-------------------------------%
% Reaction corps-coxa
syms RBCAvGx RBCAvGy RBCAvGz real;
RBCAvG = [RBCAvGx; RBCAvGy; RBCAvGz];
syms RBCCeDx RBCCeDy RBCCeDz real;
RBCCeD = [RBCCeDx; RBCCeDy; RBCCeDz];
syms RBCArGx RBCArGy RBCArGz real;
RBCArG = [RBCArGx; RBCArGy; RBCArGz];
syms MBCAvGx MBCAvGy MBCAvGz real;
MBCAvG = [MBCAvGx; MBCAvGy; MBCAvGz];
syms MBCCeDx MBCCeDy MBCCeDz real;
MBCCeD = [MBCCeDx; MBCCeDy; MBCCeDz];
syms MBCArGx MBCArGy MBCArGz real;
MBCArG = [MBCArGx; MBCArGy; MBCArGz];
%-------------------------------%
% Reaction femur-tibia
syms RFTAvGx RFTAvGy RFTAvGz real;
RFTAvG = [RFTAvGx; RFTAvGy; RFTAvGz];
syms RFTCeDx RFTCeDy RFTCeDz real;
RFTCeD = [RFTCeDx; RFTCeDy; RFTCeDz];
syms RFTArGx RFTArGy RFTArGz real;
RFTArG = [RFTArGx; RFTArGy; RFTArGz];
syms MFTAvGx MFTAvGy MFTAvGz real;
 
MFTAvG = [MFTAvGx; MFTAvGy; MFTAvGz];
syms MFTCeDx MFTCeDy MFTCeDz real;
MFTCeD = [MFTCeDx; MFTCeDy; MFTCeDz];
syms MFTArGx MFTArGy MFTArGz real;
MFTArG = [MFTArGx; MFTArGy; MFTArGz];
%-------------------------------%
% Reaction coxa-femur
syms RCFAvGx RCFAvGy RCFAvGz real ;
RCFAvG = [RCFAvGx; RCFAvGy; RCFAvGz];
syms RCFCeDx RCFCeDy RCFCeDz real;
RCFCeD = [RCFCeDx; RCFCeDy; RCFCeDz];
syms RCFArGx RCFArGy RCFArGz real;
RCFArG = [RCFArGx; RCFArGy; RCFArGz];
syms MCFAvGx MCFAvGy MCFAvGz real;
MCFAvG = [MCFAvGx; MCFAvGy; MCFAvGz];
syms MCFCeDx MCFCeDy MCFCeDz real;
MCFCeD = [MCFCeDx; MCFCeDy; MCFCeDz];
syms MCFArGx MCFArGy MCFArGz real;
MCFArG = [MCFArGx; MCFArGy; MCFArGz];
%-------------------------------%
% PGI
%-------------------------------%
g = 9.806E-3;
prec = [eps;eps;eps].*rand(3,1);
% Bras de levier en module des longueurs
a = [0,80,100];
b = [0,0,0];
alpha = [pi/2,0,0];
for o = 1:3
HD(:,:,o) = [a;b;alpha];
end
 
% Position des centre de masse dans les repere des membrures
oCDMcorps = [0;0;0];
%oCDMtibia = [23;0;0];
oCDMtibia = [50;0;0];
oCDMfemur = [40;0;0];
oCDMcoxa = [0;0;0];
dRtibia(:,:) = [a(3);b(3);0];
dRfemur = [a(2);b(2);0];
dRcoxa = [a(1);b(1);0];
dRcorps = [106,0,-106;45,-118,45;0,0,0];
%-------------------------------%
% PGI_hexapode
%-------------------------------%
% Position des extremite des pattes
cas =1;
if cas == 1 % Orthogonal
pos = [106,0,-106;125,-198,125;-100,-100,-100];
 
elseif cas == 2 % extreme ortho
pos = dRcorps + [0,0,0;150.71,-150.71,150.71;-70.711,-70.711,-70.711];
elseif cas == 3 % extreme total
pos = dRcorps + [106,0,-106;106.57,-150.71,106.57;-70.711,-70.711,-70.711];
end
 
%-------------------------------%
Qcorps = eye(3); % Orientation du corps
[art,Qhex,Phex] = PGI_hexapode(pos,HD,dRcorps,Qcorps);
mTibia = 47;
mFemur = 62;
mCoxa = 75;
mCorps = 580 + 413;
mtot = 6*(mTibia+mFemur+mCoxa)+mCorps
Wcoxa = Qcorps*[0;0;-mCoxa*g];
Wfemur = Qcorps*[0;0;-mFemur*g];
Wtibia = Qcorps*[0;0;-mTibia*g];
Wcorps = Qcorps*[0;0;-mCorps*g];
Wtot = Wcorps + 6*(Wcoxa+Wfemur+Wtibia);
%-------------------------------%
% Position des centre de masse dans le repere global
LBcdmCAvG = Qcorps*dRcorps(:,1);
LBcdmCCeD = Qcorps*dRcorps(:,2);
LBcdmCArG = Qcorps*dRcorps(:,3);
% Femur
LCFcdmAvG = Phex(:,:,2,1)*oCDMfemur;
LCFcdmCeD = Phex(:,:,2,2)*oCDMfemur;
LCFcdmArG = Phex(:,:,2,3)*oCDMfemur;
LFcdmTAvG = Phex(:,:,2,1)*(dRfemur-oCDMfemur);
LFcdmTCeD = Phex(:,:,2,2)*(dRfemur-oCDMfemur);
LFcdmTArG = Phex(:,:,2,3)*(dRfemur-oCDMfemur);
LFAvG = Phex(:,:,2,1)*dRfemur;
LFCeD = Phex(:,:,2,2)*dRfemur;
LFArG = Phex(:,:,2,3)*dRfemur;
% Tibia
 
LFTcdmAvG = Phex(:,:,3,1)*oCDMtibia;
LFTcdmCeD = Phex(:,:,3,2)*oCDMtibia;
LFTcdmArG = Phex(:,:,3,3)*oCDMtibia;
LTcdmNAvG = Phex(:,:,3,1)*(dRtibia-oCDMtibia);
LTcdmNCeD = Phex(:,:,3,2)*(dRtibia-oCDMtibia);
LTcdmNArG = Phex(:,:,3,3)*(dRtibia-oCDMtibia);
LTAvG = Phex(:,:,3,1)*(dRtibia);
LTCeD = Phex(:,:,3,2)*(dRtibia);
LTArG = Phex(:,:,3,3)*(dRtibia);
%-------------------------------%
% Systeme d’equation
%-------------------------------%
% Globale
%-------------------------------%
% Force sur dirrection Z seulement
NAvG(1:2) = [0;0];
NCeD(1:2) = [0;0];
NArG(1:2) = [0;0];
RBCAvG(1:2) = [0;0];
RBCCeD(1:2) = [0;0];
RBCArG(1:2) = [0;0];
RCFAvG(1:2) = [0;0];
RCFCeD(1:2) = [0;0];
RCFArG(1:2) = [0;0];
RFTAvG(1:2) = [0;0];
RFTCeD(1:2) = [0;0];
RFTArG(1:2) = [0;0];
% Moment en X et Y seulement
MBCAvG(3) = 0;
 
MBCCeD(3) = 0;
MBCArG(3) = 0;
MCFAvG(3) = 0;
MCFCeD(3) = 0;
MCFArG(3) = 0;
MFTAvG(3) = 0;
MFTCeD(3) = 0;
MFTArG(3) = 0;
% Contraintes globales
SFGLOB = (Wcorps + 6*(Wcoxa + Wfemur + Wtibia) + NAvG + NCeD + NArG);
SMGLOB = (cross(LBcdmCAvG+LFAvG+LTAvG,NAvG) + cross(LBcdmCCeD+LFCeD+LTCeD,NCeD) + cross(LBcdmCArG+LFArG+LTArG,NArG) + cross(LBcdmCAvG,Wcoxa) + cross(LBcdmCCeD,Wcoxa) + cross(LBcdmCArG,Wcoxa) + cross(LBcdmCAvG+LCFcdmAvG,Wfemur) + cross(LBcdmCCeD+LCFcdmCeD,Wfemur) + cross(LBcdmCArG+LCFcdmArG,Wfemur) + cross(LBcdmCAvG+LFAvG+LFTcdmAvG,Wtibia) + cross(LBcdmCCeD+LFCeD+LFTcdmCeD,Wtibia) + cross(LBcdmCArG+LFArG+LFTcdmArG,Wtibia));
% Resolution pour force de contact en Z
n = solve(SFGLOB(3),SMGLOB(1),SMGLOB(2));
NAvGz = eval(n.NAvGz);
NCeDz = eval(n.NCeDz);
NArGz = eval(n.NArGz);
check = NAvGz+NCeDz+NArGz;
%-------------------------------------------------------------------%
% Autres equations de contrainte interne
% Corps B
%-------------------------------%
% Somme force
SFB = RBCAvG + RBCCeD + RBCArG + Wcorps + 3*(Wcoxa + Wfemur + Wtibia) + prec;
% Somme moment (bras de levier au cdm)
SMB = (cross(LBcdmCAvG,RBCAvG) + cross(LBcdmCCeD,RBCCeD) + cross(LBcdmCArG,RBCArG) + MBCAvG + MBCCeD + MBCArG) + prec;
%-------------------------------%
% Patte
%-------------------------------%
% Coxa C
% Somme force
SFCAvG = (-RBCAvG + RCFAvG + Wcoxa) + prec;
SFCCeD = (-RBCCeD + RCFCeD + Wcoxa) + prec;
SFCArG = (-RBCArG + RCFArG + Wcoxa) + prec;
% Somme moment (bras de levier au cdm)
SMCAvG = (-MBCAvG + MCFAvG) + prec;
SMCCeD = (-MBCCeD + MCFCeD) + prec;
SMCArG = (-MBCArG + MCFArG) + prec;
%-------------------------------%
% Femur F
% Somme force
SFFAvG = (-RCFAvG + RFTAvG + Wfemur) + prec;
SFFCeD = (-RCFCeD + RFTCeD + Wfemur) + prec;
SFFArG = (-RCFArG + RFTArG + Wfemur) + prec;
% Somme moment (bras de levier au cdm)
SMFAvG = (cross(-LCFcdmAvG,-RCFAvG) + cross(LFcdmTAvG,RFTAvG) - MCFAvG + MFTAvG) + prec;
SMFCeD = (cross(-LCFcdmCeD,-RCFCeD) + cross(LFcdmTCeD,RFTCeD) - MCFCeD + MFTCeD) + prec;
SMFArG = (cross(-LCFcdmArG,-RCFArG) + cross(LFcdmTArG,RFTArG) - MCFArG + MFTArG) + prec;
%-------------------------------%
% Tibia T
% Somme force
SFTAvG = (-RFTAvG + NAvG + Wtibia) + prec;
SFTCeD = (-RFTCeD + NCeD + Wtibia) + prec;
SFTArG = (-RFTArG + NArG + Wtibia) + prec;
% Somme moments (bras de levier au cdm)
SMTAvG = (cross(-LFTcdmAvG,-RFTAvG) - MFTAvG + cross(LTcdmNAvG,NAvG))+ prec;
SMTCeD = (cross(-LFTcdmCeD,-RFTCeD) - MFTCeD + cross(LTcdmNCeD,NCeD))+ prec;
SMTArG = (cross(-LFTcdmArG,-RFTArG) - MFTArG + cross(LTcdmNArG,NArG))+ prec;
%-------------------------------%
% Resolution
%-------------------------------%
sol = solve(SFB(3),SMB(1),SMB(2),SFCAvG(3),SMCAvG(1),SMCAvG(2),SFFAvG(3),SMFAvG(1),SMFAvG(2),SFTAvG(3),SMTAvG(1),SMTAvG(2),SFCCeD(3),SMCCeD(1),SMCCeD(2),SFFCeD(3),SMFCeD(1),SMFCeD(2),SFTCeD(3),SMTCeD(1),SMTCeD(2),SFCArG(3),SMCArG(1),SMCArG(2),SFFArG(3),SMFArG(1),SMFArG(2),SFTArG(3),SMTArG(1),SMTArG(2));
NAvGz = eval(sol.NAvGz);
NCeDz = eval(sol.NCeDz);
NArGz = eval(sol.NArGz);
check = NAvGz+NCeDz+NArGz;
MBCAvGx = eval(sol.MBCArGx);
MBCCeDx = eval(sol.MBCCeDx);
MBCArGx = eval(sol.MBCAvGx);
MBCArGy = eval(sol.MBCArGy);
MBCCeDy = eval(sol.MBCCeDy);
MBCArGy = eval(sol.MBCAvGy);
MCFAvGx = eval(sol.MCFArGx);
MCFCeDx = eval(sol.MCFCeDx);
MCFArGx = eval(sol.MCFAvGx);
MCFAvGy = eval(sol.MCFArGy);
MCFCeDy = eval(sol.MCFCeDy);
MCFArGy = eval(sol.MCFAvGy);
MFTAvGx = eval(sol.MFTArGx);
MFTCeDx = eval(sol.MFTCeDx);
MFTArGx = eval(sol.MFTAvGx);
MFTAvGy = eval(sol.MFTAvGy);
MFTCeDy = eval(sol.MFTCeDy);
MFTArGy = eval(sol.MFTArGy);
RBCArGz = eval(sol.RBCArGz);
RBCCeDz = eval(sol.RBCCeDz);
RBCAvGz = eval(sol.RBCAvGz);
RCFAvGz = eval(sol.RCFAvGz);
RCFCeDz = eval(sol.RCFCeDz);
RCFArGz = eval(sol.RCFArGz);
RFTAvGz = eval(sol.RFTAvGz);
RFTCeDz = eval(sol.RFTCeDz);
RFTArGz = eval(sol.RFTArGz);
MCFAvG_patte = Phex(:,:,2,1)'*MCFAvG;
subs(MCFAvG_patte)
MCFCeD_patte = Phex(:,:,2,2)'*MCFCeD;
subs(MCFCeD_patte)
MCFArG_patte = Phex(:,:,2,3)'*MCFArG;
subs(MCFArG_patte)
%-------------------------------%
affichage = 1;
if affichage == 1
figure;
hold on;
plot3([LBcdmCAvG(1),LBcdmCCeD(1),LBcdmCArG(1),LBcdmCAvG(1)],[LBcdmCAvG(2),LBcdmCCeD(2),LBcdmCArG(2),LBcdmCAvG(2)],[LBcdmCAvG(3),LBcdmCCeD(3),LBcdmCArG(3),LBcdmCAvG(3)],'k-');
plot3([0, LBcdmCAvG(1), LBcdmCAvG(1)+LFAvG(1), LBcdmCAvG(1)+LFAvG(1)+LTAvG(1)],[0, LBcdmCAvG(2), LBcdmCAvG(2)+LFAvG(2), LBcdmCAvG(2)+LFAvG(2)+LTAvG(2)],[0, LBcdmCAvG(3), LBcdmCAvG(3)+LFAvG(3), LBcdmCAvG(3)+LFAvG(3)+LTAvG(3)],'o-b');
plot3([0, LBcdmCCeD(1), LBcdmCCeD(1)+LFCeD(1), LBcdmCCeD(1)+LFCeD(1)+LTCeD(1)],[0, LBcdmCCeD(2), LBcdmCCeD(2)+LFCeD(2), LBcdmCCeD(2)+LFCeD(2)+LTCeD(2)],[0, LBcdmCCeD(3), LBcdmCCeD(3)+LFCeD(3), LBcdmCCeD(3)+LFCeD(3)+LTCeD(3)],'o-r');
plot3([0, LBcdmCArG(1), LBcdmCArG(1)+LFArG(1), LBcdmCArG(1)+LFArG(1)+LTArG(1)],[0, LBcdmCArG(2), LBcdmCArG(2)+LFArG(2), LBcdmCArG(2)+LFArG(2)+LTArG(2)],[0, LBcdmCArG(3), LBcdmCArG(3)+LFArG(3), LBcdmCArG(3)+LFArG(3)+LTArG(3)],'o-g');
% Femur
plot3(LBcdmCAvG(1)+LCFcdmAvG(1), LBcdmCAvG(2)+LCFcdmAvG(2),LBcdmCAvG(3)+LCFcdmAvG(3),'xk');
plot3(LBcdmCCeD(1)+LCFcdmCeD(1), LBcdmCCeD(2)+LCFcdmCeD(2),LBcdmCCeD(3)+LCFcdmCeD(3),'xk');
plot3(LBcdmCArG(1)+LCFcdmArG(1), LBcdmCArG(2)+LCFcdmArG(2),LBcdmCArG(3)+LCFcdmArG(3),'xk');
% Tibia
plot3(LBcdmCAvG(1)+LFAvG(1)+LFTcdmAvG(1),LBcdmCAvG(2)+LFAvG(2)+LFTcdmAvG(2), LBcdmCAvG(3)+LFAvG(3)+LFTcdmAvG(3),'xk');
plot3(LBcdmCCeD(1)+LFCeD(1)+LFTcdmCeD(1),LBcdmCCeD(2)+LFCeD(2)+LFTcdmCeD(2),LBcdmCCeD(3)+LFCeD(3)+LFTcdmCeD(3),'xk');
plot3(LBcdmCArG(1)+LFArG(1)+LFTcdmArG(1),LBcdmCArG(2)+LFArG(2)+LFTcdmArG(2),LBcdmCArG(3)+LFArG(3)+LFTcdmArG(3),'xk');
xlabel('X'); ylabel('Y'); zlabel('Z');
axis equal;
% view(3)
view([0,0,180]);
% Affichage du cercle de contact
[cC,r] = cercle3pts(pos(1:2,:)');
t = 0:0.01:2*pi+0.01;
for o = 1:size(t,2)
x(o) = cC(1) + r*cos(t(o));
y(o) = cC(2) + r*sin(t(o));
end
plot3(x,y,ones(1,size(x,2))*pos(3,1),'c-');
plot3(cC(1),cC(2),pos(3,1),'c+');
% Affichage du cercle d’ancrage
[cA,r] = cercle3pts(dRcorps(1:2,:)');
t = 0:0.01:2*pi+0.01;
for o = 1:size(t,2)
x(o) = cA(1) + r*cos(t(o));
y(o) = cA(2) + r*sin(t(o));
end
plot3(x,y,ones(1,size(x,2))*pos(3,1),'m-');
plot3(cA(1),cA(2),pos(3,1),'m+');
distCentre = norm(cA-cC)
end
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 06.09.2016, 08:24     Titel:
  Antworten mit Zitat      
I guess, you've got your answer in your other thread:
http://www.developpez.net/forums/d1...../matlab/syms-code-erreur/

You need the function, with the name "PGI_hexapode". Nobody can know this function except the codewriter.

Try to search for "PGI_hexapode.m" on the PC.
Or ask, if there is a copy somewhere. Or maybe it is a part of a master/bachelor/diploma-thesis and there it is printed,...
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.