Mise en évidence d'élément de matrice à l'affichage dans le Command Window

Présentation
Voici un code MATLAB qui permet de mettre en évidence d'élément de matrice à l'affichage dans le Command Window
Téléchargement
Compatibilité
Linux Mac Windows
0  0 
Téléchargé 20 fois Voir les 6 commentaires
Détails
Avatar de Jérôme Briot
Rédacteur / Modérateur
Voir tous les téléchargements de l'auteur
Licence : Libre
Date de mise en ligne : 4 juin 2014




Avatar de kmaniche kmaniche - Membre chevronné https://www.developpez.com
le 24/01/2010 à 19:32
Je trouve que cette discussion prendra une bonne place dans la partie FAQ ou Source.

Cette fonction est très, très intéressante ...

Avatar de kmaniche kmaniche - Membre chevronné https://www.developpez.com
le 06/02/2010 à 18:15
J'ai eu besoin de cette fonction, mais le résultat ne me plais pas beaucoup, un problème de format de donnée et espacement entre les colonnes :

La matrice m :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
>> m=randi([0 255], 15,15) 
 
m = 
 
   211   141   150    91   218    29    94    96   138   186    57   159   112   193   117 
    48     8   105    18   246    13   169   224    79    90   137    83   244    88   158 
   113    13    79   151   173    77    43   200    18   199   195   205    31   107   238 
   100   206    67   233   103   148    71   119    46   111    88   255   120    39   213 
   211   115   194    49   239   135    50   208    23   111   118   251   219   209   229 
   173    97   254   110   122   230    49   230   118    12   163    32    11   159   149 
    53   202    47   191    59   138    83   109     2    12   234    59   177   189   149 
    81    93   199    10   101   110   225    85   234    23    41     6   250   206   218 
    34   136    50   242   180   138   120   152   164   152   183   155    72    17     8 
   171   182   254   195   142   182   103   230     0    61   147    28    34   243   226 
   146   223   205   143   193     4    45   179     7   215   110   104   175   127   104 
    43    84   108    47   254   205   248    96    53   219   226   226   232   193     9 
    37   166   186   127   246    36   104   188   116   246   100   140   156   190   191 
   121   249   127   132   136   122   216   244    32   125    45    94   230   212    39 
   232    19   207   254   246    65   157   138     2    56   162    53    49    40    36
le résultat :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
>> surligne(fix(m), '%d', m<10) 
 
211 141 150 91 218 29 94 96 138 186 57 159 112 193 117 
48 8 105 18 246 13 169 224 79 90 137 83 244 88 158 
113 13 79 151 173 77 43 200 18 199 195 205 31 107 238 
100 206 67 233 103 148 71 119 46 111 88 255 120 39 213 
211 115 194 49 239 135 50 208 23 111 118 251 219 209 229 
173 97 254 110 122 230 49 230 118 12 163 32 11 159 149 
53 202 47 191 59 138 83 109 2 12 234 59 177 189 149 
81 93 199 10 101 110 225 85 234 23 41 6 250 206 218 
34 136 50 242 180 138 120 152 164 152 183 155 72 17 8 
171 182 254 195 142 182 103 230 0 61 147 28 34 243 226 
146 223 205 143 193 4 45 179 7 215 110 104 175 127 104 
43 84 108 47 254 205 248 96 53 219 226 226 232 193 9 
37 166 186 127 246 36 104 188 116 246 100 140 156 190 191 
121 249 127 132 136 122 216 244 32 125 45 94 230 212 39 
232 19 207 254 246 65 157 138 2 56 162 53 49 40 36
Donc pour le résoudre, j'ai fais ceci :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
 
for n=1:numel(M)    
    if idx(n)        
        str=[str '<a href="">' sprintf(fmt,M(n)) '</a>' sprintf('\t')];         
    else         
        str=[str sprintf(fmt,M(n)) sprintf('\t')];         
    end 
    if ~mod(n/sM(1),1) 
        str=[str(1:end-1) '\n']; 
    end         
end
Reste un tout petit inconvénient, les valeurs sont aligné à gauche de la colonne et non à droite comme le fait matlab par défaut !
Avatar de Jerome Briot Jerome Briot - Rédacteur/Modérateur https://www.developpez.com
le 06/02/2010 à 20:23
Pas besoin de modifier la fonction.

Il suffit de modifier le second argument d'entrée :

Code : Sélectionner tout
surligne(fix(m), '%3d', m&lt;10)
ou
Code : Sélectionner tout
surligne(fix(m), '%3d\t', m&lt;10)
Lire la documentation de la fonction FPRINTF pour les différents formats disponibles
Avatar de kmaniche kmaniche - Membre chevronné https://www.developpez.com
le 06/02/2010 à 21:55
OK, ça marche. Peut-on changer la couleur par exemple mettre en rouge ?
Avatar de Jerome Briot Jerome Briot - Rédacteur/Modérateur https://www.developpez.com
le 06/02/2010 à 22:47
Pour une version plus évoluée : cprintf - display formatted colored text in the Command Window

Warning:
This code heavily relies on undocumented and unsupported Matlab functionality. It works on Matlab 7+, but use at your own risk!
Avatar de IING NIAM IING NIAM - Candidat au Club https://www.developpez.com
le 05/08/2016 à 16:22
very good!!
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.
Contacter le responsable de la rubrique MATLAB