Bonjour,
Comment faire la Pré-allocation mémoire pour un vecteur que je ne connais pas sa taille?
Voici un exemple:
(Je suppose que je ne connais pas la taille du vecteur list à la fin)
Bonjour,
Comment faire la Pré-allocation mémoire pour un vecteur que je ne connais pas sa taille?
Voici un exemple:
(Je suppose que je ne connais pas la taille du vecteur list à la fin)
On est bien d’accord que l'exemple que tu montres est très simpliste et ne nécessite pas réellement de boucle.
De manière générale, il n'y a pas de solution parfaite à ce problème. La solution la plus simple consiste à donner la taille maximale au vecteur. Vu la quantité de mémoire disponible sur les machines 64 bits modernes, cela ne pose généralement plus de problème.
Par exemple :
Tu traites ensuite uniquement les valeurs de list différente de NaN :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 S = [1 2 3 0 4 1 2 6 5 4 4]; list = NaN(size(S)); k = 0; for i = 1:numel(S) if S(i)==4 k = k+1; list(k) = i; end end
Mais dans tous les cas, il est préférable de tester le code avec et sans la préallocation de mémoire (si possible sur la machine où le code sera exécuté au final)
Code : Sélectionner tout - Visualiser dans une fenêtre à part list = list(~isnan(list));
Car : Pourquoi la préallocation de mémoire ralentit-elle mon code ?
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager