0
0
Mise en évidence d'élément de matrice à l'affichage dans le Command Window
Cette fonction est très, très intéressante
...
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 :
le résultat :
>> 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
Donc pour le résoudre, j'ai fais ceci :
>> 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
Reste un tout petit inconvénient, les valeurs sont aligné à gauche de la colonne et non à droite comme le fait matlab par défaut !
for n=1:numel(M)
if idx(n)
str=[str '' sprintf(fmt,M(n)) '' 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
Il suffit de modifier le second argument d'entrée :
| Code : | Sélectionner tout |
surligne(fix(m), '%3d', m<10)
| Code : | Sélectionner tout |
surligne(fix(m), '%3d\t', m<10)
This code heavily relies on undocumented and unsupported Matlab functionality. It works on Matlab 7+, but use at your own risk!