GNU Octave, arrondit un nombre à la précision des unités
Dans GNU Octave version 3.4.3 je veux autour d'une matrice à 2 unités de précision sur le contenu d'une matrice comme ça.
mymatrix=[1.1234567, 2.12345; 3.1234567891, 4.1234];
disp(mymatrix);
Cette affiche:
1.1235 2.1235
3.1235 4.1234
Comme vous pouvez le voir, la disp forces de la précision de '5', je veux que les unités de la précision à 2. Comment puis-je faire cela?
source d'informationauteur Eric Leschinski
Vous devez vous connecter pour publier un commentaire.
Comment faire pour arrondir les éléments dans une matrice en Octave:
Il y a beaucoup de façons différentes pour le tour d'une matrice et d'arrondir un nombre à l'octave.
L'Option 1, l'utilisation de sprintf fonction de formatage
De sortie, note le "%5.2 f" jeton. Le " f " signifie s'attendre à un flotteur, le 5 signifie occuper de 5 espaces. Le 2 signifie 2 unités de précision après la virgule.
Option 2, à la ronde de chiffres significatifs en utilisant eval et mat2str
De sortie, la matrice arrondie à 3 chiffres significatifsavis 100.123 arrondi à 100 alors que le 2.12345 a été arrondi à 2.12
L'Option 3, utiliser la fonction round
La fonction round n'a pas une précision paramètre Octave. Cependant, vous pouvez pirater autour de lui en multipliant chaque élément de la matrice par 100, arrondi au plus proche int, puis en divisant chaque élément par 100:
De sortie, tour se passe correctement:
L'Option 4, spécifiez un output_precision(num)
- Vous remarqué que l'option 3 ci-dessus gardé les zéros de fin, qui peut être indésirable, de sorte que vous pouvez leur dire de s'en aller par la mise en output_precision:
De sortie:
Octave peut ont vraiment un comportement étrange lors de la tentative de faire de l'arrondissement, n'oubliez pas, qu'octave s'efforce d'appliquer uniformément arrondi à tous les éléments d'une matrice. Donc, si vous avez plusieurs colonnes avec très différentes valeurs, octave peut regarder un partcularly minuscule de la valeur et de penser: "Hey, je devrais convertir exponentielle: 0,0001 à 1.0 e-04, et donc, la même chose est appliquée à l'ensemble de la matrice.
pour ceux qui veulent le faire fonctionner sans creuser en profondeur dans la discussion pourquoi les choses sont comme ça (à savoir octave
round
encore ne prend pas en charge un deuxième argument de la définition de la précision).Solution de CONTOURNEMENT: