Surprise à la fin de l'article, bienvenue pour le récupérer ! Peut être directement dessiné à la fin de l'article!
Ne manquez pas le prix !
Tant que le produit concerné est acheté dans un magasin de détail, il doit être activé. Donc, ne donnez pas trop d'introduction.
Caractéristiques : authentique, payant, service après-vente, activation permanente
1. Apprenez d'abord à utiliser le profileur pour analyser l'efficacité du code.
1.1. Ouvrez le profileur.
Sur ma machine : sous le bureau Matlab, Desktop-> Profiler.
Sous l'éditeur de fichiers M, Outils-> Ouvrir Profiler.
1.2. Exécuter le profileur
Vous pouvez copier le code à exécuter dans la zone de saisie après Exécuter ce code.
Vous pouvez exécuter cet exemple
[t,y] = ode23('lotka',[0 2],[20;20])
Vous pouvez également saisir le nom du fichier M à exécuter.
1.3.Cliquez sur Démarrer le profilage (ou appuyez sur Entrée après avoir saisi la déclaration).
1.4. Afficher le rapport détaillé du profil
Il vous dira quel code consomme combien de temps, vous pouvez trouver quelles fonctions ou quelles lignes de code consomment le plus de temps ou sont appelées fréquemment.
Vous pouvez également utiliser la fonction Timer du chronomètre pour calculer le temps de consommation du programme
Utilisez le tic et le toc comme indiqué ici.
tic
- lancer la partie programme à chronométrer -
toc
2. Méthode d'accélération 1 - programmation vectorisée
Les programmes MATLAB sont interprétés. Cela semblerait le rendre inapproprié pour le calcul scientifique à grande échelle. La puissance de MATLAB est réalisée avec son vaste ensemble de bibliothèques qui sont compilées ou soigneusement codées dans MATLAB pour utiliser la \"vectorisation\". La vectorisation est essentielle pour comprendre comment écrire du code MATLAB efficace.
Le code vectorisé tire parti, dans la mesure du possible, des opérations impliquant des données stockées sous forme de vecteurs. Cela s'applique même aux matrices puisqu'une matrice MATLAB est stockée (par colonnes) dans des emplacements contigus dans la RAM de l'ordinateur. La vitesse d'un algorithme numérique dans MATLAB est très sensible à l'utilisation ou non d'opérations vectorisées.
MATLAB est un langage matriciel, ce qui signifie qu'il est conçu pour les opérations vectorielles et matricielles. Vous pouvez souvent accélérer votre code de fichier M en utilisant des algorithmes de vectorisation qui tirent parti de cette conception. La vectorisation signifie convertir les boucles for et while en vecteur ou matrice équivalent opérations.
je = 0 ;
pour t = 0:01:1000 ;
je = je+1 ;
y(i) = sin(t);
fin
Le temps d'exécution est de 30,776 secondes.
Ce code est une conversion naturelle de la forme du langage C, mais son efficacité est très faible ! Matlab alloue de la mémoire pour les variables en temps réel. Lors de la première boucle (c'est-à-dire lorsque i=1), Matlab alloue de la mémoire pour le vecteur y (longueur 1). Chaque fois que la boucle est exécutée dans le futur, Matlab ajoutera un nouvel élément à la fin de y. Cela conduit non seulement à une augmentation des appels pour allouer de la mémoire, mais rend également la distribution des éléments de y en mémoire non contiguë (comme la différence entre un tableau et une liste chaînée dans une structure de données). En revanche, le code suivant est beaucoup plus efficace :
Passer au code vectorisé :
t = 0:01:1000 ;
y = sin(t);
Le temps d'exécution est de 0 seconde.
La première instruction alloue un espace mémoire contigu pour stocker un vecteur t avec plusieurs éléments. De même, lorsque la deuxième instruction alloue de la mémoire, elle alloue également un espace mémoire contigu pour stocker le vecteur y avec plusieurs éléments. Outre le coût du calcul de sin, le nombre d'exécutions de commandes d'allocation de mémoire et la facilité d'accès aux éléments vectoriels sont indiscernables.
Fonctions utilisées dans la vectorisation. Certaines des fonctions les plus couramment utilisées pour la vectorisation sont : all, diff, ipermute, permute, remodeler, presser, tout, trouver, logique, prod, shiftdim, sub2ind, cumsum, ind2sub, ndgrid, repmat, sort, somme
3. Méthode d'accélération 2 - Préallouer des tableaux (espace préalloué)
Vous pouvez souvent améliorer le temps d'exécution du code en préallouant les tableaux qui stockent les résultats de sortie. La préallocation évite à MATLAB de redimensionner un tableau chaque fois que vous l'agrandissez. Utilisez la fonction de préallocation appropriée pour le type de tableau avec lequel vous travaillez.
La préallocation aide également à réduire la fragmentation de la mémoire si vous travaillez avec de grandes matrices.
Bien que Matlab ajuste automatiquement la taille des variables, il est préférable d'allouer à l'avance de l'espace mémoire pour les variables. Parce que cela peut réduire le nombre de fois où la commande d'allocation de mémoire est appelée à 1, et peut également rendre les variables stockées en continu en mémoire (lorsque la variable est une matrice, elle est stockée en continu en mémoire par colonne). Ce que l'on appelle la "pré-allocation d'espace mémoire pour les variables" signifie que lorsque la taille de la variable est connue, avant qu'aucun élément de la variable ne soit référencé, une variable de même taille est créée.
Suivez et répondez à [logiciel] pour l'obtenir gratuitement !
🎁Le tirage à la fin de l' article🎁
Retweetez cet article pour dire vos bénédictions
Tirez 5 trésors pour prendre le coeur, lampe pratique haut de gamme en pierre naturelle & sel
Conditions de sélection :
1-Suivez ce compte officiel
2- Retweetez ce tweet au cercle d'amis. Vous ne pouvez pas seulement le voir vous-même. Vous devez le conserver jusqu'à ce que vous le vérifiiez. Vous ne pouvez pas prendre de fausses captures d'écran.
3- Après le tirage au sort, veuillez le vérifier dans les jours ouvrables 3. Si le prix n'est pas échangé dans le délai imparti ou ne répond pas aux exigences, le prix sera disqualifié.
Après avoir prêté attention à ce compte public, vous pouvez répondre à [Lottery Draw]
Lucky Wheel Lucky Wheel Événement surprise