Posez votre question Signaler

Matlab et les boucles

anonyme - Dernière réponse le 9 juin 2009 à 10:07
Bonjour,
j'ai un petit problème avec les boucles :
for i=1:length(Y)
if Y<=-0.1
y(i,1)=1
else
y(i,1)=0
end
end
voilà la boucle. Elle a pour but de regarder quand la ligne i de Y (qui est l'amplitude d'un fichier wav issue d'un wavread) est inférieure à -0.1. Si c'est le cas, elle transforme ,dans une matrice y de même longueur, la ligne correspondante en 1 ou en 0 si la condition est réalisée de sorte à avoir une sorte de signal carré.
mais le problème c'est que Y comporte plus de 710000 points et je peux difficilement la rétrécir. Et à chaque boucle, la boucle me réecrit la matrice y qui fait 710000 points et donc ceci 710000 fois donc c'est interminable !!
J'arrive pas à trouver un moyen pour traiter les lignes une par une pour que la matrice Y soit examiner q'une seule fois
pouvez vous m'aider, pas me sortir un code, mais m'expliquer une autre façon de procéder
Merci
Lire la suite 
Réponse
+0
moins plus
slt
il faut affecté une valeur a "y"
Ajouter un commentaire
Réponse
+0
moins plus
je t'avoue que j'ai du mal à te suivre
ninouhhichem 201Messages postés jeudi 21 mai 2009Date d'inscription 21 juin 2009 Dernière intervention - 9 juin 2009 à 01:09
il faut ecrire la langeur de y
si non ce prg ne peut pas executé

length(Y) =-0.1

for i=1:length(Y)
if length(Y) <=-0.1
y(i,1)=1
else
y(i,1)=0
end
end
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
je crois que je me suis mal fait comprendre,

je veux savoir si à la ligne i de Y, la valeur est infèrieure à -0.1
je veux pas savoir si la longueur de Y (710000 et des brouettes) est infèrieure à -0.1

mon programme s'exécute et marche, enfin du moins pour le début, mais vu qu'à chaque fin de boucle il me réécrit un vecteur de 710000 points, beh ça prend du du temps...

en gros est ce que matlab peut changer une valeur dans un vecteur sans le réécrire en entier?
anonyme- 9 juin 2009 à 10:07
aaaaaaaahhhhhhhhhh mais j'ai compris ce que tu m'as dit

for i=1:length(Y)
if Y(i,1)<=-0.1
A(i,1)=1
else
A(i,1)=0
end
end


voilà le bon code

mes excuses
Répondre
Ajouter un commentaire
Ce document intitulé «  matlab et les boucles  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.