Merci d'avance :)
Pièce jointe 94494
Version imprimable
Merci d'avance :)
Pièce jointe 94494
Bonjour,
As-tu essayé de coder quelquechose? Quels sont les problèmes que tu rencontres pour implémenter cette formule?
Duf
Bonjour,
Je voudrai transformé une distribution de probabilité en une distribution de possibilité par la formule déjà citée.Je n'arrive pas à l' implémenter.
Je commence à la programmer :
et Merci d'avance :)Code:
1
2
3
4
5
6
7 p=[0.2 0.35 0.4 0.05 ]; nX = numel(p); [B,IX] = sort(p); for i=1:4 s=max(sum(pi),sum(pi+1)); end
pour calculer une somme , il faut initialiser une var à 0 ensuite il faut ouvrir une boucle dont les extrémités sont celle de la somme, et on place la formule à l'intérieur, à toi de jouer
Je pense qu'il manque surtout des parenthèses dans ta ligne de code:
Code:
1
2 s(i)=max(sum(p(i:end)),sum(p((i+1):end)));
Merci beaucoup,
Il y a t'il une fonction qui permet d'inverser le vecteur IX pour donner le rang de chaque pi triés dans l'ordre croissant .
Par exemple dans cet exemple l’exécution jusqu'à la ligne 3 me donne un vecteur B [0.05,0.2,0.35,0.4] et dans le vecteur IX [4,1,2,3] j'ai l'ordre de chaque Pi cadCode:
1
2
3
4
5
6
7 pi=[0.2 0.35 0.4 0.05]; v=[]; [B,IX] = sort(pi); v(1)=IX(3); v(2)=IX(4); v(3)=IX(1); v(4)=IX(2);
IX(1)=4
IX(2)=1
IX(3)=2
IX(4)=3
maintenant je veux inverser cad
je veux :
v(1)=2
v(2)=3
v(3)=4
v(4)=1
Bonjour,
tu veux réellement inverser IX ou bien cherches-tu à classer pi du plus grand au plus petit? (par défaut la fonction sort classe du plus petit au plus grand)
si c'est le deuxième cas :
Autre chose : évite d'utiliser pi comme nom de variable, pi est déjà le nom de la variable matlab qui représente le nombre pi.Code:[B,IX] = sort(pi,'descend')
Bonjour,
Merci pour votre rapide réponce à ma question
Je veux veux réellement inverser IX et non de classer pi du plus grand au plus petit? (je sais que la fonction sort classe du plus petit au plus grand).
j' éviterai d'utiliser pi comme nom de variable.:ccool:
Ok, d'ailleurs j'avais mal lu ton post, tu veux faire une rotation circulaire sur IX?
Quelque chose comme :
?Code:v = circshift(IX,[1 2])
j'ai reverifié et j'ai trouvé que ce n'est pas la vrai solution la fonction circshift
je veux l'inverse par exemple:
v(1)=2 après transformation inverse on trouve vi(2)=1
bon ici j'ai un vecteur donc [4 1 2 3] par transformation devient [2 3 4 1]
un autre exemple
[4 1 3 2] devient [2 4 3 1]
:?
Tu peux essayer l'une des fonctions FLIPUD ou FLIPLR.
Non ,j'ai essayé mais ce n'est pas ce que je voulais
Merci dans tous les cas;)
Tu pourrais donner une formule générale, ou un exemple avec un vecteur plus grand ? Car je ne vois pas de point commun entre les deux exemples donnés :koi:
Deux autres fonctions qui peuvent effectuer ce genre de permutation : fftshift et ifftshift.
Merci beaucoup ,c'est ce que je voulais exactement :ccool:
En exécutant ce code, je vais ordonner la liste les éléments du vecteur p donc je vais trouve:Code:
1
2 p=[0.2 0.5 0.2 0.1]; [B,IX] = sort(p);
B=[0.1,0.2,0.2,0.5] qui est le vecteur ordonné
et IX=[4,1,3,2] les positions des éléments dans p dans le vecteur ordonnés B.
Mais comme vous voyons ici je peut avoir deux permutations de IX et non une seul cad je peut avoir IX aussi IX=[4,3,1,2] puissque dans p j'ai deux éléments égaux "0,2".
Il y a t'il une fonction qui peut me donner les permutations possibles lorsqu'il y a des valeurs égales dans un même vecteur?;)
Regarde la doc de la fonction unique.
c'est également une fonction très puissante et aux multiples usages selon les paramètres utilisés, en entrée comme en sortie. Il te faudra peut-être comme moi un moment de réflexion pour pouvoir en tirer le meilleur parti possible, mais ça vaut le coup.