Bonsoir,
Existe t-il une fonction Matlab qui donne les paramètres d'une hélice tel que le rayon et la pente à partir de ses coordonnées (fichier joint)?
merci d'avance
Bonsoir,
Existe t-il une fonction Matlab qui donne les paramètres d'une hélice tel que le rayon et la pente à partir de ses coordonnées (fichier joint)?
merci d'avance
Salut,
a ma connaissance, il n'existe pas de fonctions qui permette de calculer ces paramètres. Mais tu devrais pouvoir t'en sortir de manière empirique. Reste à savoir si ça peut te convenir.
Pour connaitre le rayon de ton hélice, il faut regarder du côté des valeurs en X ou en Y.
Pour connaitre le pas de ton hélice, il faut regarder la hauteur de répétition sur ton axe Z.
Avec ça, tu devrais pouvoir t'en sortir en utilisant les équations de l'hélice circulaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 A=csvread('helix.csv'); X=A(:,1); Y=A(:,2); Z=A(:,3); subplot(1,3,1) plot3(X,Y,Z,'.') daspect([1 1 1]) subplot(1,3,2) plot3(X,Y,Z,'.') daspect([1 1 1]) view(180,0) subplot(1,3,3) plot3(X,Y,Z,'.') daspect([1 1 1]) view(2) % Rayon R=(abs(max(X))+abs(min(X)))/2; %ou R=(abs(max(Y))+abs(min(Y)))/2; %hauteur de ton pas (2 d'après ta courbe. Tu peux le faire varier suivant le nombre de répétition que tu as en Z) T=max(Z)/2;
bonsoir et merci pour ta réponse
J'ai crée une hélice circulaire avec le code suivant:
Pour le rayon je projette x et y sur un plan et je fais un fit circulaire pour obtenir le rayon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 >> t=0:0.03:4*pi; >> x=20*cos(t); >> y=20*sin(t); >> z=5*(t);
Mais pour ce qui est de la pente (dans l'exemple elle vaut 5), je ne sais plus comment m'y prendre
si je fais ce que tu m'as proposée, je ne retrouve pas le 5
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 >> T=max(z)/2 T = 31.3500
merci
La définition de l'hélice n'est pas correcte :
Pour déterminer la pente, étudie le graphique suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 t = 0:0.03:4*pi; x = 20*cos(2*pi*t); y = 20*sin(2*pi*t); z = 5*(t);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 figure plot(z,y) xlabel('z'); ylabel('y'); axis equal
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
Bonsoir et merci pour votre réponse,
Comment peut-on extraire la pente à partir d'une sinusoïde?
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 figure plot(z,y) xlabel('z'); ylabel('y'); axis equal
Tu peux déterminer la longueur d'une spire en déterminant la période (ou demi-période) de la sinusoide. Pour cela il "suffit" d'analyser les changement de signe le long de la courbe.
Une fois que tu connais la longueur d'une spire, tu peux trouver le pas : http://fr.wikipedia.org/wiki/H%C3%A9...m%C3%A9trie%29
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
Bonjour et merci pour ta réponse
J'ai suivi ton conseil mais la valeur retrouvée ne correspond pas à la pente:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 clc clear R=20; t = 0:0.03:4*pi; x = R*cos(2*pi*t); y = R*sin(2*pi*t); z = 5*(t); figure plot(z,y) xlabel('z'); ylabel('y'); axis equal [pks,locs] = findpeaks(y); for i=1:length(locs)-1 a(i)=z(locs(i+1))-z(locs(i)); end l=mean(a); p=sqrt(4*pi*pi*((l^2/4*pi*pi)-R*R))
Essaie ceci :
C'est juste une idée. Il faudrait en améliorer la robustesse avant de l'utiliser vraiment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 R=20; t = 0:0.001:4*pi; x = R*cos(2*pi*t); y = R*sin(2*pi*t); z = 5*t; % idx = strfind(sign(y),[1 -1]); [pks,idx] = findpeaks(y); xsp = x(idx(1):idx(2)); ysp = y(idx(1):idx(2)); zsp = z(idx(1):idx(2)); p = sqrt((xsp(end)-xsp(1))^2+(ysp(end)-ysp(1))^2+(zsp(end)-zsp(1))^2) % ou l = sum(sqrt((xsp(end:-1:2)-xsp(end-1:-1:1)).^2+(ysp(end:-1:2)-ysp(end-1:-1:1)).^2+(zsp(end:-1:2)-zsp(end-1:-1:1)).^2)); p = sqrt((l)^2-4*pi^2*R^2) figure plot(z,y,'b-',zsp,ysp,'go',z(idx),y(idx),'r*') xlabel('z'); ylabel('y'); axis equal
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
Bravo !!
Je galère depuis des jours pour calculer la pente et ça parait tellement simple pour toi....Mille mercis
Avant de l'utiliser j'aimerais bien le comprendre, tu es entrain de calculer la distance entre deux points d'une spire c'est ça? comment as-tu fait pour savoir que c'est ta pente?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 p = sqrt((xsp(end)-xsp(1))^2+(ysp(end)-ysp(1))^2+(zsp(end)-zsp(1))^2)
Comment puis-je calculer l'erreur de cette méthode?Il faudrait en améliorer la robustesse avant de l'utiliser vraiment
Je te remercie beaucoup
Deux points extrêmes sur une spire, oui
Ce n'est pas la pente mais le pas. Pour obtenir la pente, il suffit d'appliquer le théorème de Pythagore avec la longueur de la spire comme hypoténuse et le pas comme coté opposé.
Je calculerais les valeurs pour plusieurs spires.
Je ferais ensuite une moyenne et un écart type
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
Bonsoir,
J'étais très contente en exécutant le code que tu m'as donnée au point d'avoir oublié ce que je cherchais
J'essaie de retrouver le pas P directement du plot de l'hélice car je ne suis pas sensée connaitre l'équation paramétrique qui a permis de la générer et malheureusement dans le code x,y,z sont utilisés
Il suffit de réfléchir un peu et surtout de penser à réordonner les points le long de l'hélice :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 XYZ = xlsread('helix.xlsx'); x = XYZ(:,1); y = XYZ(:,2); z = XYZ(:,3); [z,idx] = sort(z); x = x(idx); y = y(idx); idx = strfind(sign(y).',[1 -1]); xsp = x(idx(1):idx(2)); ysp = y(idx(1):idx(2)); zsp = z(idx(1):idx(2)); figure plot(z,y,'bd',zsp,ysp,'go',z(idx),y(idx),'r*') xlabel('z'); ylabel('y'); axis equal
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Afin de calculer la pente, je dois calculer la longueur d'une période de la sinusoide, est-ce que ça revient à calculer la distance entre les différents points puis faire une addition à la fin?
merci encore
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager