[MATLAB] - Optimisation de trajectoire

Fermé
smo8000 Messages postés 5 Date d'inscription vendredi 22 août 2008 Statut Membre Dernière intervention 4 septembre 2008 - 4 sept. 2008 à 21:01
Irene_Adler Messages postés 129 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 9 juillet 2011 - 4 sept. 2008 à 21:52
Bonjour, j'aurais voulu savoir s'il existait une fonction qui permette d'optimiser des trajectoires sous matlab.

Je m'explique : lorsque je trace une trajectoire sur matlab avec juste des coordonnées en x et y (cfg morceau de code) lors de la simulation cela me renvoie bien sur ma trajectoire mais entre certains points, il y a des changements de direction trop brusque et j'aurai voulu affiné ces cassures par des arrondi qui permette d'être au plus proche de la réalité.

Je penses qu'il existe bien une fonction qui permette cela mais laquelle ? J’ai regardé du coté de polyfit et polyval mais rien donc j'attends impatiemment votre soutient :)

X = [-995.000000 8913.012695 27995.990234 34968.007812 59046.980469 66893.742188 78268.976562 88890.984375 89650.015625 90914.554688];
Y = [60761.000000 64430.003906 81310.992188 80943.960938 82499.960938 94297.320312 99950.968750 99961.820312 107791.000000 122712.898438];
plot(X,Y);
hold on;

Merci et bonne soirée
A voir également:

1 réponse

Irene_Adler Messages postés 129 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 9 juillet 2011 18
4 sept. 2008 à 21:52
salut,
une solution serait d'appliquer un filtre, voici une fonction qui pourait t'aider:

function [filtFi]=explicitFILT0(Fi)
% Explicit Shapiro filtering for vector Fi
% Zero order formula (p=0)
% ----------------------------------------------------------------------------------------------------
% ----------------------------------------------------------------------------------------------------
% Arguments :
%  Fi : cell averaged vector
% ----------------------------------------------------------------------------------------------------
% ----------------------------------------------------------------------------------------------------
N=length(Fi);
% Coefficients
a0=2;
a1=1;
% Filtered vector
filtFi(1,1)=Fi(1);
filtFi(1,2:N-1)=1/2^2*[a0 a1]*[Fi(2:N-1);Fi(3:N)+Fi(1:N-2)];
filtFi(1,N)=Fi(N);
return
--
-1