Help programmation matlab
layali4
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à toutes et à tous,
je souhaite avoir votre aide sur un problème matlab :
j'ai un vecteur qui porte des valeurs négatifs et positifs exemple A=[0 1 2 -0.1 -0.5 4 5 6 -0.2 -4 -10 1 8 6 ] et je dois connaitre les indices au moment ou mon vecteur change de signe: càd l'indice de 2 et de -0.1, l'indice de -0.5 et 4 l'indice de 6 et de -0.2 et l'indice de -10 et 1. merci par avance de votre aide
je souhaite avoir votre aide sur un problème matlab :
j'ai un vecteur qui porte des valeurs négatifs et positifs exemple A=[0 1 2 -0.1 -0.5 4 5 6 -0.2 -4 -10 1 8 6 ] et je dois connaitre les indices au moment ou mon vecteur change de signe: càd l'indice de 2 et de -0.1, l'indice de -0.5 et 4 l'indice de 6 et de -0.2 et l'indice de -10 et 1. merci par avance de votre aide
A voir également:
- Help programmation matlab
- Application de programmation - Guide
- Programmation envoi sms - Guide
- Programmation binaire - Guide
- Programmation vb - Télécharger - Langages
- Programmation télécommande porte de garage brico depot - Forum Matériel & Système
2 réponses
il suffit de parcourir ton vecteur et de stocker les indices lorsque tu détectes un changement de signe.
j'ai trouver voici le programme:
i=1:1:12;
a(i,1)=[-5; -4 ;-2.3; -6; -2.2; -0.01; 1; 2; 0.2; -0.2; -0.3; 5 ]
n=1:11;
h=find(a(n,1)<0&a(n+1,1)>0|a(n,1)>0&a(n+1,1)<0)
i=1:1:12;
a(i,1)=[-5; -4 ;-2.3; -6; -2.2; -0.01; 1; 2; 0.2; -0.2; -0.3; 5 ]
n=1:11;
h=find(a(n,1)<0&a(n+1,1)>0|a(n,1)>0&a(n+1,1)<0)
ça peut être une solution, mais ce n'est pas très lisible.
Tu peux aussi faire :
b=a(1:end-1).*a(2:end);
c=(b<0);
Le principe, c'est que tu multiplie chaque nombre par son voisin, si il y a changement de signe, alors le résultat de la multiplication sera négatif. L'opération booleéenne te met un 1 là où il y a changement de signe.
Tu peux aussi faire :
b=a(1:end-1).*a(2:end);
c=(b<0);
Le principe, c'est que tu multiplie chaque nombre par son voisin, si il y a changement de signe, alors le résultat de la multiplication sera négatif. L'opération booleéenne te met un 1 là où il y a changement de signe.