Probleme pour multiplier 2 matrices
Fermé
Setth
Messages postés
9
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
29 juillet 2009
-
9 avril 2009 à 10:59
Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020 - 9 avril 2009 à 16:45
Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020 - 9 avril 2009 à 16:45
A voir également:
- Probleme pour multiplier 2 matrices
- Jdownloader 2 - Télécharger - Téléchargement & Transfert
- 2 comptes whatsapp - Guide
- Epson scan 2 ✓ - Forum Imprimante
- 2 ecran pc - Guide
- Scratch 2 gratuit - Télécharger - Éducatifs
8 réponses
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
9 avril 2009 à 11:29
9 avril 2009 à 11:29
Et ben !
Là comme ça, à par un problème dans la déclaration des variables je ne vois pas.
Donne nous la déclaration de i,j,h,buff,A,Px,AP.
Ou alors un bug dans le compilateur qui fait que les tableaux à deux dimensions sont mal gérés.
Sort les adresses de j et AP aussi, pour vérifier que j n'est pas dans le tableau.
Là comme ça, à par un problème dans la déclaration des variables je ne vois pas.
Donne nous la déclaration de i,j,h,buff,A,Px,AP.
Ou alors un bug dans le compilateur qui fait que les tableaux à deux dimensions sont mal gérés.
Sort les adresses de j et AP aussi, pour vérifier que j n'est pas dans le tableau.
Setth
Messages postés
9
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
29 juillet 2009
9 avril 2009 à 11:48
9 avril 2009 à 11:48
float buff;
int i,j,h;//Variables de boucle
float A[2][2];
float Px[2][2]; //Estimation de la covariance de l'erreur sur l'angle x
float AP[n][n]; // This is the matrix A*P
Nan, les déclarations de variables sont bonnes....
Et pour les adresses, j est à 2060 et AP[i][j] à 2068.
Il me semble aussi que ça soit le compilateur qui merde...
int i,j,h;//Variables de boucle
float A[2][2];
float Px[2][2]; //Estimation de la covariance de l'erreur sur l'angle x
float AP[n][n]; // This is the matrix A*P
Nan, les déclarations de variables sont bonnes....
Et pour les adresses, j est à 2060 et AP[i][j] à 2068.
Il me semble aussi que ça soit le compilateur qui merde...
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
9 avril 2009 à 12:07
9 avril 2009 à 12:07
AP[i][j] à 2068 n'a pas de sens si on ne connais pas i et j.
en général, il faut connaitre l'adresse de départ : AP[0][0]
ensuite, il faut bien sur avoir les tailles de int et float. en général, c'est 4 et 4 je crois.
Si 'j' a la même adresse que AP[0][1], le problème viens de là, sinon, le compilateur a un bug.
Je suis d'accord avec toi loupious, mais comme le compilateur a l'air un peu exotique, je n'ai pas écarté aussi violemment cette hypothèse.
en général, il faut connaitre l'adresse de départ : AP[0][0]
ensuite, il faut bien sur avoir les tailles de int et float. en général, c'est 4 et 4 je crois.
Si 'j' a la même adresse que AP[0][1], le problème viens de là, sinon, le compilateur a un bug.
Je suis d'accord avec toi loupious, mais comme le compilateur a l'air un peu exotique, je n'ai pas écarté aussi violemment cette hypothèse.
Setth
Messages postés
9
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
29 juillet 2009
9 avril 2009 à 15:26
9 avril 2009 à 15:26
J'ai testé : 'j' n'à pas la même adresse que AP[0][1].
Et le compilateur n'est pas "exotique", c'est juste de la programmation embarquée^^
Et le compilateur n'est pas "exotique", c'est juste de la programmation embarquée^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 816
9 avril 2009 à 15:52
9 avril 2009 à 15:52
Salut,
Je n'aime pas beaucoup cette ligne : float AP[n][n];
Donne la définition de n ?
Car si tu ne spécifies pas à la bonne taille : AP[i][j]=buff; va récrire sur la pile puisque l'esp n'aura pas été décrémenté suffisamment lors de la compilation. Ainsi, il est possible d'avoir des résultats surprenants.
Cdlt
Je n'aime pas beaucoup cette ligne : float AP[n][n];
Donne la définition de n ?
Car si tu ne spécifies pas à la bonne taille : AP[i][j]=buff; va récrire sur la pile puisque l'esp n'aura pas été décrémenté suffisamment lors de la compilation. Ainsi, il est possible d'avoir des résultats surprenants.
Cdlt
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
9 avril 2009 à 15:52
9 avril 2009 à 15:52
Il reste en suspent, que vaut n ?
Mais si AP[0][1] ne vaut pas j, je ne vois pas pourquoi j serais modifier...
Si tu fait :
j=1;
AP[0][1]=buff;
printf( j );
est-ce que j est modifié ?
Mais si AP[0][1] ne vaut pas j, je ne vois pas pourquoi j serais modifier...
Si tu fait :
j=1;
AP[0][1]=buff;
printf( j );
est-ce que j est modifié ?
Setth
Messages postés
9
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
29 juillet 2009
9 avril 2009 à 16:34
9 avril 2009 à 16:34
Pour n :
#define n 2
Et pour ta question char sniper, oui 'j' est modifié si je fait ça^^
#define n 2
Et pour ta question char sniper, oui 'j' est modifié si je fait ça^^
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
9 avril 2009 à 16:45
9 avril 2009 à 16:45
Donc ta déclaration est propre.
J'ai deux trois idées.
AP[0][1] a des bits en commun avec 'j', auquel cas, il y a vraiment quelque chose qui m'échappe, ou c'est un bug.
j serait une variable utilisé par quelque chose en dessous pour calculer le tableau, et donc le lien se ferai (tu n'aurai pas une autre variable nommé j ?).
Essai de renommer j en autre chose ("variable_j" par exemple).
Essai de déclarer tes variables en static, il y a peut être là encore un problème de porté.
Simplifie au maximum ton programme jusqu'à ce qu'il ne fasse plus que quelques lignes pour faire une espèce de démonstrateur du problème.
J'ai deux trois idées.
AP[0][1] a des bits en commun avec 'j', auquel cas, il y a vraiment quelque chose qui m'échappe, ou c'est un bug.
j serait une variable utilisé par quelque chose en dessous pour calculer le tableau, et donc le lien se ferai (tu n'aurai pas une autre variable nommé j ?).
Essai de renommer j en autre chose ("variable_j" par exemple).
Essai de déclarer tes variables en static, il y a peut être là encore un problème de porté.
Simplifie au maximum ton programme jusqu'à ce qu'il ne fasse plus que quelques lignes pour faire une espèce de démonstrateur du problème.