je vous propose une question qui devrait vous faire aimer la fonction RESHAPE de MATLAB
---------------------------------------------------
Soit le programme suivant :
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | clc clear all for n = 500:500:8000 clear X X = rand(n); tic X = reshape(X,1,[]); t = toc; fprintf('Taille de X: %5d x%5d (%5.1f Mo) : %.7f s\n',n,n,n*n*8/1024/1024,t); end |
La ligne avec FPRINTF affiche à chaque itération les dimensions du tableau, sa taille approximative en Mo et le temps d'exécution du redimensionnement en secondes.
Voici ce que j'obtiens sur ma machine :
Taille de X: 500 x 500 ( 1.9 Mo) : 0.0003590 s Taille de X: 1000 x 1000 ( 7.6 Mo) : 0.0000450 s Taille de X: 1500 x 1500 ( 17.2 Mo) : 0.0000450 s Taille de X: 2000 x 2000 ( 30.5 Mo) : 0.0000410 s Taille de X: 2500 x 2500 ( 47.7 Mo) : 0.0000440 s Taille de X: 3000 x 3000 ( 68.7 Mo) : 0.0000420 s Taille de X: 3500 x 3500 ( 93.5 Mo) : 0.0000440 s Taille de X: 4000 x 4000 (122.1 Mo) : 0.0000450 s Taille de X: 4500 x 4500 (154.5 Mo) : 0.0000430 s Taille de X: 5000 x 5000 (190.7 Mo) : 0.0000440 s Taille de X: 5500 x 5500 (230.8 Mo) : 0.0000710 s Taille de X: 6000 x 6000 (274.7 Mo) : 0.0000430 s Taille de X: 6500 x 6500 (322.3 Mo) : 0.0000440 s Taille de X: 7000 x 7000 (373.8 Mo) : 0.0000430 s Taille de X: 7500 x 7500 (429.2 Mo) : 0.0000430 s Taille de X: 8000 x 8000 (488.3 Mo) : 0.0000430 s
Il faut aussi peu de temps pour redimensionner le tableau de 8Mo que celui de 500Mo
Cela peut sembler surprenant sachant qu'il y a 1 000 000 éléments dans le premier et qu'il y en a 64 fois plus dans le second (64 000 000 éléments)
Comment cela est-il possible ?
A vos neurones et à vos claviers !