[pb Matlab] filtres numeriques
Fermé
tommstein
Messages postés
6
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
31 mai 2005
-
25 mai 2005 à 14:54
foufou - 13 juin 2009 à 15:32
foufou - 13 juin 2009 à 15:32
A voir également:
- Filtre passe bande matlab
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Voir mot de passe wifi android - Guide
- Trousseau mot de passe iphone - Guide
- Mot de passe administrateur - Guide
- Identifiant et mot de passe - Guide
24 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
27 mai 2005 à 12:37
27 mai 2005 à 12:37
A=signal_bruite(); freq=fft(A); freq_filtrer=zeros(sizeof(freq),1); m=int(sizeof(freq)/2); freq_filtrer (m-freq_de_coupure:freq_de_coupure)= freq(m-freq_de_coupure:freq_de_coupure); sig_filter=fft(freq_filtrer,-1); %# ou ifft je ne sait plustu as ainsi ton signal filtrer par un filtre passe bas allant jusqu'à freq_de_coupure
c'est l'algorithme de base, il te reste ensuite à bien définir les abscisses.
en esperant avoir bien repondu
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
25 mai 2005 à 15:40
25 mai 2005 à 15:40
Salut !
MATLAB, il n'y a rien de plus simple.
tu veux savoir comment fonctionne la fonction fct
tu tape help fct.
donc, tu as ton signal bruité stocker dans le vecteur A
tu fait
frequence=fft(A);
je ne suis plus sur du fft(A) il faut peu être faire fft(A,1) pour la fft direct.
tout est dans help fft
sinon, pour l'abscisse c'est plus chiant. si je me rapel bien, ta fréquence maximal c'est la moitié de la résolution. si ta grandeur d'évolution du signal est 't' la fréquane maximale mesurable est 1/(2×t)
Voila
MATLAB, il n'y a rien de plus simple.
tu veux savoir comment fonctionne la fonction fct
tu tape help fct.
donc, tu as ton signal bruité stocker dans le vecteur A
tu fait
frequence=fft(A);
je ne suis plus sur du fft(A) il faut peu être faire fft(A,1) pour la fft direct.
tout est dans help fft
sinon, pour l'abscisse c'est plus chiant. si je me rapel bien, ta fréquence maximal c'est la moitié de la résolution. si ta grandeur d'évolution du signal est 't' la fréquane maximale mesurable est 1/(2×t)
Voila
tommstein
Messages postés
6
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
31 mai 2005
25 mai 2005 à 16:53
25 mai 2005 à 16:53
merci Char Sniper,
L'help j'avais trouve mais mon pb etait surtout de faie un programme qui definisse la nature du signal d'entree et puisse le filtrer selon la methode des fenetres puis restituer un signal affichable en sortie.
L'help j'avais trouve mais mon pb etait surtout de faie un programme qui definisse la nature du signal d'entree et puisse le filtrer selon la methode des fenetres puis restituer un signal affichable en sortie.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
27 nov. 2006 à 17:47
27 nov. 2006 à 17:47
Salut.
Ce que tu veux faire, ce nome filtre médian il me semble.
C'est un filtre non linéaire, il parcour ta matrice (x,y z ça se met sous forme de matrice, c plus simple ) et compare chaque valeur à ses voisines, et il prend la valeur la plus proche de la moyenne.
sinon, tu peux parcourir ta matrice avec une condition de modification.
C'est quoi tes valeurs abérante? Le premier travail, c'est déjà de définir ce qu'est une valeur incohérente en terme mathématique, ensuite je pourrai t'aider plus précisément.
Ce que tu veux faire, ce nome filtre médian il me semble.
C'est un filtre non linéaire, il parcour ta matrice (x,y z ça se met sous forme de matrice, c plus simple ) et compare chaque valeur à ses voisines, et il prend la valeur la plus proche de la moyenne.
sinon, tu peux parcourir ta matrice avec une condition de modification.
C'est quoi tes valeurs abérante? Le premier travail, c'est déjà de définir ce qu'est une valeur incohérente en terme mathématique, ensuite je pourrai t'aider plus précisément.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
>
elaj
27 avril 2009 à 08:07
27 avril 2009 à 08:07
non, jamais, désolé.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
4 juin 2008 à 08:39
4 juin 2008 à 08:39
pour définir une fonction fct en Matlab, il faut créer un fichier fct.m et écrire dedans :
une fonction récurente, il faut un critère d'arret, donc le corps de la fonction doit ressembler à ça :
if (n==2)
y=0:
else
y=1.55193 fct(n-1) - 0.89181 ...
function y=fct(param) %% coprs de la fonction end;
une fonction récurente, il faut un critère d'arret, donc le corps de la fonction doit ressembler à ça :
if (n==2)
y=0:
else
y=1.55193 fct(n-1) - 0.89181 ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
4 juin 2008 à 16:52
4 juin 2008 à 16:52
dsl, bode et reponse indicielle, je connais pas. Bode à la rigueur me dit quelque chose, mais je confond peut être avec Bose (pour dire)
bonjour,
j'ai besoin d 'un peu d'aide au sujet de matlab. Voilà, je voudrais traiter un ensemble de points expérimentaux (700 environ, abscisse X, ordonnée Y ) sous matlab pour enlever le bruit dû à ma mesure. J'ai déjà essayé de lisser mes données expérimentales avec la fonction polyfit mais le résultat n'est pas génial car je n'ai utilisé qu'un polynôme de degré 10( au delà de ce degré il parait que c est un peu ingérable pour matlab). En gros pour avoir un ordre d idée sur les données que j ai , l'ensemble de mes points correspond à une superposition de gaussiennes avec des hauteurs et des écart types différents et certains points sortent un peu de la tendance générale de ma courbe. et vu qu'ensuite j'essaie de déterminer des points d'inflexion, mon bruit perturbe beaucoup cette détermination. Est ce que quelqu un connaît une méthode ou fonction de matlab qui pourrait me permettre de supprimer le bruit ?
j'ai besoin d 'un peu d'aide au sujet de matlab. Voilà, je voudrais traiter un ensemble de points expérimentaux (700 environ, abscisse X, ordonnée Y ) sous matlab pour enlever le bruit dû à ma mesure. J'ai déjà essayé de lisser mes données expérimentales avec la fonction polyfit mais le résultat n'est pas génial car je n'ai utilisé qu'un polynôme de degré 10( au delà de ce degré il parait que c est un peu ingérable pour matlab). En gros pour avoir un ordre d idée sur les données que j ai , l'ensemble de mes points correspond à une superposition de gaussiennes avec des hauteurs et des écart types différents et certains points sortent un peu de la tendance générale de ma courbe. et vu qu'ensuite j'essaie de déterminer des points d'inflexion, mon bruit perturbe beaucoup cette détermination. Est ce que quelqu un connaît une méthode ou fonction de matlab qui pourrait me permettre de supprimer le bruit ?
tommstein
Messages postés
6
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
31 mai 2005
31 mai 2005 à 12:06
31 mai 2005 à 12:06
merci encor char snipeur. mais je ne comprend pas pourquoi il faut une integration pour avoir m. j'ai cherche la fonction sizeof() ds l'aide, pas de reponse??
tommstein
Messages postés
6
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
31 mai 2005
31 mai 2005 à 12:28
31 mai 2005 à 12:28
la fonction size() semble remplacer la fonction sizeof() mais il ne veut pas de mon integration, matlab me dit : ??? Function 'int' is not defined for values of class 'double'. J'ai un warning pour freq_filtrer=zeros(sizeof(freq),1); : Warning: Input arguments must be scalar.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
31 mai 2005 à 13:05
31 mai 2005 à 13:05
ok, en effet, c'est size() et pas sizeof() partout ( un peu de mal à passez du C à matlab)
à la place de int, utilise floor (même pb qu'au dessus) le but est d'avoir un entier.
en fait, fait plutot freq_filtrer=0*freq; c'est plus simple est ça donne le même résultat.
à la place de int, utilise floor (même pb qu'au dessus) le but est d'avoir un entier.
en fait, fait plutot freq_filtrer=0*freq; c'est plus simple est ça donne le même résultat.
salut!
Bon je vs ecrit car je suis un peu ds la m^me galere!
Moi j'ai un signal que je souhaite filtrer.J'ai tracer son spectre mais comment éliminer les harmoniques afin de construire un nouveau signal propre??
Merci d'avance!!
Bon je vs ecrit car je suis un peu ds la m^me galere!
Moi j'ai un signal que je souhaite filtrer.J'ai tracer son spectre mais comment éliminer les harmoniques afin de construire un nouveau signal propre??
Merci d'avance!!
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
7 juin 2005 à 12:33
7 juin 2005 à 12:33
comme j'ai dit.
tu copie dans freq_filtrer les fréquances que tu veux garder.
tu copie dans freq_filtrer les fréquances que tu veux garder.
Heu désolé mais je débute sur Matlab...
Voici le code que j'ai tapé pr obtenir mon spectre :
v étant mon vecteur à analyser...
Merci
Voici le code que j'ai tapé pr obtenir mon spectre :
NFFT=2^(nextpow2(length(V))-1); [Pxx,f]=psd(V,NFFT,50,'mean');
v étant mon vecteur à analyser...
Merci
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
7 juin 2005 à 14:12
7 juin 2005 à 14:12
dsl, je ne connait pas les fonctions que tu utilises.
ma méthode fait ça pas à pas
ma méthode fait ça pas à pas
bonjour à toi char Snipeur,
Je me permet de te contacter car j'ai un petit problème avec ce bon vieux matlab:
je dispose de donnée pointuelles en z y et z (en réalité des latitude et longitude et altitude associées) sur cette trame j'observe plusieurs point insolés ou regroupé totalmeent incohérent en z...
et pour le moment je me trouve comme un con à les supprimer via un éditeur de texte et cela manuellement, autrement dis je me m'en sort pas...
Comment puis-je faire pour appliquer un filtre afin de pouvoir supprimer mes données éronées....sachant que je suis débutant en matlab...
Un très très grand merci d'avance!!! si jamais tu peux me répondre dans la semaine le plus tôt possible ça serait génial!!
très bonne journée!
guillaume.
Je me permet de te contacter car j'ai un petit problème avec ce bon vieux matlab:
je dispose de donnée pointuelles en z y et z (en réalité des latitude et longitude et altitude associées) sur cette trame j'observe plusieurs point insolés ou regroupé totalmeent incohérent en z...
et pour le moment je me trouve comme un con à les supprimer via un éditeur de texte et cela manuellement, autrement dis je me m'en sort pas...
Comment puis-je faire pour appliquer un filtre afin de pouvoir supprimer mes données éronées....sachant que je suis débutant en matlab...
Un très très grand merci d'avance!!! si jamais tu peux me répondre dans la semaine le plus tôt possible ça serait génial!!
très bonne journée!
guillaume.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
27 nov. 2006 à 21:39
27 nov. 2006 à 21:39
En fait, le filtre médian en 2D voi par exemple 21 23 52, il garde 23.
son principal effet est d'écrèter toute courbe.
En 3D je ne sais pas comment le faire fonctionner. Je prendrait la valeur à évaluer et les deux voisin suuivant x et suivant y.
par exemple ta valuer : 250, et les voisine 23, 21 suivant x et 52 256 suivant y. Ta valeur n'est pas abérante, donc tu la conserv par contre, tu aurai eu 52 et 53 selon y, il faut que tu la change. Et c'est là que je ne sai pas quelle valeur lui affecter...
son principal effet est d'écrèter toute courbe.
En 3D je ne sais pas comment le faire fonctionner. Je prendrait la valeur à évaluer et les deux voisin suuivant x et suivant y.
par exemple ta valuer : 250, et les voisine 23, 21 suivant x et 52 256 suivant y. Ta valeur n'est pas abérante, donc tu la conserv par contre, tu aurai eu 52 et 53 selon y, il faut que tu la change. Et c'est là que je ne sai pas quelle valeur lui affecter...
et bien en fait je pense que ça n'est pas la peinne de prendre en considération les x et y, vue que les valeurs abérentes sont en z (altitude).quand tu parles de filtres 3D, peut ont encader le point à supprimer par 4 valeur (sommes dans une matirce) et lui dire que si la moyenne des différence dépace une certaine valeur donnée, il doit supprimer la valeur...crois tu que ça soit quelque chose de joueable?
un grand merci d'avance!
guillaume
un grand merci d'avance!
guillaume
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
28 nov. 2006 à 14:46
28 nov. 2006 à 14:46
Salut.
J'ai pas tout compris.
Comment sont foutu tes données? je ne comprend pas.
Mais quand tu a une altitude, tu peux ecrire z=f(x,y) en gral
donc définir des valeur selon x et y...
J'ai pas tout compris.
Comment sont foutu tes données? je ne comprend pas.
Mais quand tu a une altitude, tu peux ecrire z=f(x,y) en gral
donc définir des valeur selon x et y...
bonjour
j'ai un fichier .mat et je je dois utiliser comme un bloc sous simulink qu est ce que je dois faire
merci d avance
j'ai un fichier .mat et je je dois utiliser comme un bloc sous simulink qu est ce que je dois faire
merci d avance
Dans le cadre d'un projet, je dois désaisonnaliser des données. En fait j'ai fait la fft mais je ne sais pas comment obtenir le spectre car en utilisant la fonction plot, un nuage de points apparait.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
7 févr. 2008 à 14:06
7 févr. 2008 à 14:06
la fft est complexe, donc, pour obtenir le spectre, il faut réer l'axe des abscisse d'après l'échantionage de tes donnée, et utilisé la partie réèlle ou le module du résultat de la fft.
Par exemple, si tu as un échantillonage de 1 seconde et milles points.
La fréquence maximale que tu pourra avoir est autour de 1 Hz (je crois que c'est 0,5 Hz car il te faut au moins 2 points pour déterminer une fréquence; à vérifier) Et la fréquence minimale sera de 10^-3 Hz, ou 5.10^-2Hz.
Par exemple, si tu as un échantillonage de 1 seconde et milles points.
La fréquence maximale que tu pourra avoir est autour de 1 Hz (je crois que c'est 0,5 Hz car il te faut au moins 2 points pour déterminer une fréquence; à vérifier) Et la fréquence minimale sera de 10^-3 Hz, ou 5.10^-2Hz.
bonjour!
je traite des données d'un courantomètre. j'ai besoin de supprimer les vitesses dont l'intensité de l'écho (autre matrice de taille égale) est inférieure à une certaine valeur. les valeurs NaN de la matrice intensité écho doivent être dans les mêmes cases que celle de la matrice vitesse
pour donner un autre exemple, je dois éliminer les vitesses qui sont au dessus de la courbe de marée, par contre le nombre de ligne est identique mais il n'y a qu'une colonne...
merci, en espérant que vous aillez compris mon problème
je traite des données d'un courantomètre. j'ai besoin de supprimer les vitesses dont l'intensité de l'écho (autre matrice de taille égale) est inférieure à une certaine valeur. les valeurs NaN de la matrice intensité écho doivent être dans les mêmes cases que celle de la matrice vitesse
pour donner un autre exemple, je dois éliminer les vitesses qui sont au dessus de la courbe de marée, par contre le nombre de ligne est identique mais il n'y a qu'une colonne...
merci, en espérant que vous aillez compris mon problème