Probleme Boucle dans une boucle.
Posté : 14 janv. 2013, 13:00
Bonjour à tous
voila, j'ai un gros problème avec mon code PHP. J'ai dans un fichier des valeurs que j'ai récupéré, et c'est l'amplitude de quelque chose en fonction du temps, donc elle varie. Si l'on avait une image, la courbe serait sinusoidale, donc il y a plusieurs pics d'amplitude. J'ai réussi à faire un code qui permet de trouver les intervalles ou il pourrait y avoir des pics d'amplitude, mais maintenant, je dois trouver ces pics d'amplitude en question mais je n'y parviens pas. Voici la partie de code la plus importante pour vous situer dans le contexte, c'est à partir du while que ca pose problème, car j'ai mis une boucle dans une boucle, mais je crois pas que ca soit la bonne solution, merci d'avance :
voila, j'ai un gros problème avec mon code PHP. J'ai dans un fichier des valeurs que j'ai récupéré, et c'est l'amplitude de quelque chose en fonction du temps, donc elle varie. Si l'on avait une image, la courbe serait sinusoidale, donc il y a plusieurs pics d'amplitude. J'ai réussi à faire un code qui permet de trouver les intervalles ou il pourrait y avoir des pics d'amplitude, mais maintenant, je dois trouver ces pics d'amplitude en question mais je n'y parviens pas. Voici la partie de code la plus importante pour vous situer dans le contexte, c'est à partir du while que ca pose problème, car j'ai mis une boucle dans une boucle, mais je crois pas que ca soit la bonne solution, merci d'avance :
$temporaire = array ();
$l = count($donnees);
for($cle=0; $cle < $l ;$cle++) // On va extraire du tableau donnees toutes les valeurs surperieur a la borne inferieur 468 et on va le mettre dans le tableau temporaire.
{
if($donnees[$cle]["amplitude"] > $borne_inf)
{
$temporaire[]=array('temps'=> $donnees[$cle]['temps'],'amplitude'=> $donnees[$cle]["amplitude"] ) ;
}
}
echo '<pre>';
print_r($temporaire); // On affiche les données contenu dans le tableau.
echo '</pre>';
$l = count($temporaire); // Count va compter tous les elements du tableau temporaire, et on la met dans la variable $l.
$debut_intervalle=0; // On définit la variable
$fin_intervalle=0; // On définit la variable
$i = 0; // On définit la variable
$maxi = array(); // On créer le tableau maxi qui va contenir les maximum d'amplitude.
$indice=0; // On definit les variables.
while($i<$l-1) // Tant qu'on est pas passer par tous les elements du tableau temporaire...
{
if(($temporaire[$i+1]['temps']-$temporaire[$i]['temps']>0.3) || $i==$l-2) // Si l'on change d'intervalle.
{
$fin_intervalle=$i;
echo "pic d’amplitude trouvé entre $debut_intervalle et $fin_intervalle <br>"; $debut_intervalle=$i+1; // On cherche les intervalles de clé.
$maximum=$temporaire[$debut_intervalle]['amplitude']; // Début de la monté pour l'amplitude.
echo "Au début de l’intervalle, le maximum vaut $maximum <br>" ;
$temps_max=$temporaire[$debut_intervalle]['temps']; // Début de la monté pour le temps.
echo "Au début de l’intervalle , le temps vaut $temps_max <br>" ;
for($k=$debut_intervalle ;$k < $l-1; $k++) // Tant que l'on est pas passer par tous les elements du tableau
{
if($temporaire[$k]['amplitude'] > $maximum AND $temporaire[$k]['temps'] > $temps_max) // Si l'amplitude est supérieur à la monté de l'amplitude.
{
$maximum=$temporaire[$k]['amplitude']; // L'amplitude est égale au début de la monté.
$temps_max=$temporaire[$k]['temps']; // Le temps est égale au temps du début de la monté.
echo "$temps_max <br />";
echo"$maximum <br />";
}
$maxi[$indice]['temps']=$temps_max;
$maxi[$indice]['amplitude']=$maximum;
}
$indice++;
}
$i++;
}
echo '<pre>';
print_r($maxi); // On affiche les données contenu dans le tableau.
echo '</pre>';
?>