MATLAB - Guide rapide
MATLAB (laboratoire de matrices) est un langage de programmation de haut niveau de quatrième génération et un environnement interactif pour le calcul numérique, la visualisation et la programmation.
MATLAB est développé par MathWorks.
Il permet des manipulations matricielles; tracé des fonctions et des données; mise en œuvre d'algorithmes; création d'interfaces utilisateur; l'interfaçage avec des programmes écrits dans d'autres langages, y compris C, C ++, Java et FORTRAN; analyser les données; développer des algorithmes; et créer des modèles et des applications.
Il possède de nombreuses commandes et fonctions mathématiques intégrées qui vous aident dans les calculs mathématiques, la génération de tracés et l'exécution de méthodes numériques.
La puissance des mathématiques computationnelles de MATLAB
MATLAB est utilisé dans toutes les facettes des mathématiques computationnelles. Voici quelques calculs mathématiques couramment utilisés où il est le plus couramment utilisé -
- Gestion des matrices et des tableaux
- Tracé et graphiques 2D et 3D
- Algèbre linéaire
- Equations algébriques
- Fonctions non linéaires
- Statistics
- L'analyse des données
- Calcul et équations différentielles
- Calculs numériques
- Integration
- Transforms
- Courbe d'ajustement
- Diverses autres fonctions spéciales
Caractéristiques de MATLAB
Voici les fonctionnalités de base de MATLAB -
C'est un langage de haut niveau pour le calcul numérique, la visualisation et le développement d'applications.
Il fournit également un environnement interactif pour l'exploration itérative, la conception et la résolution de problèmes.
Il fournit une vaste bibliothèque de fonctions mathématiques pour l'algèbre linéaire, les statistiques, l'analyse de Fourier, le filtrage, l'optimisation, l'intégration numérique et la résolution d'équations différentielles ordinaires.
Il fournit des graphiques intégrés pour visualiser les données et des outils pour créer des tracés personnalisés.
L'interface de programmation de MATLAB fournit des outils de développement pour améliorer la maintenabilité de la qualité du code et maximiser les performances.
Il fournit des outils pour créer des applications avec des interfaces graphiques personnalisées.
Il fournit des fonctions pour intégrer des algorithmes basés sur MATLAB avec des applications externes et des langages tels que C, Java, .NET et Microsoft Excel.
Utilisations de MATLAB
MATLAB est largement utilisé comme outil de calcul en science et en ingénierie englobant les domaines de la physique, de la chimie, des mathématiques et de tous les courants d'ingénierie. Il est utilisé dans une gamme d'applications, y compris -
- Traitement du signal et communications
- Traitement d'image et de vidéo
- Systèmes de contrôle
- Test et mesure
- Finance informatique
- Biologie computationnelle
Configuration de l'environnement local
La configuration de l'environnement MATLAB se fait en quelques clics. Le programme d'installation peut être téléchargé à partir d' ici .
MathWorks fournit également le produit sous licence, une version d'essai et une version étudiante. Vous devez vous connecter au site et attendre un peu leur approbation.
Après avoir téléchargé le programme d'installation, le logiciel peut être installé en quelques clics.
Comprendre l'environnement MATLAB
L'IDE de développement MATLAB peut être lancé à partir de l'icône créée sur le bureau. La fenêtre de travail principale de MATLAB s'appelle le bureau. Au démarrage de MATLAB, le bureau apparaît dans sa disposition par défaut -
Le bureau comporte les panneaux suivants -
Current Folder - Ce panneau vous permet d'accéder aux dossiers et fichiers du projet.
Command Window- C'est la zone principale où les commandes peuvent être saisies sur la ligne de commande. Il est indiqué par l'invite de commande (>>).
Workspace - L'espace de travail affiche toutes les variables créées et / ou importées à partir de fichiers.
Command History - Ce panneau affiche ou renvoie les commandes entrées sur la ligne de commande.
Configurer GNU Octave
Si vous souhaitez utiliser Octave sur votre machine (Linux, BSD, OS X ou Windows), veuillez télécharger la dernière version depuis Download GNU Octave . Vous pouvez consulter les instructions d'installation fournies pour votre machine.
L'environnement MATLAB se comporte comme une calculatrice super complexe. Vous pouvez entrer des commandes à l'invite de commande >>.
MATLAB est un environnement interprété. En d'autres termes, vous donnez une commande et MATLAB l'exécute tout de suite.
Pratique pratique
Tapez une expression valide, par exemple,
5 + 5
Et appuyez sur ENTER
Lorsque vous cliquez sur le bouton Exécuter ou tapez Ctrl + E, MATLAB l'exécute immédiatement et le résultat renvoyé est -
ans = 10
Prenons quelques exemples supplémentaires -
3 ^ 2 % 3 raised to the power of 2
Lorsque vous cliquez sur le bouton Exécuter ou tapez Ctrl + E, MATLAB l'exécute immédiatement et le résultat renvoyé est -
ans = 9
Un autre exemple,
sin(pi /2) % sine of angle 90o
Lorsque vous cliquez sur le bouton Exécuter ou tapez Ctrl + E, MATLAB l'exécute immédiatement et le résultat renvoyé est -
ans = 1
Un autre exemple,
7/0 % Divide by zero
Lorsque vous cliquez sur le bouton Exécuter ou tapez Ctrl + E, MATLAB l'exécute immédiatement et le résultat renvoyé est -
ans = Inf
warning: division by zero
Un autre exemple,
732 * 20.3
Lorsque vous cliquez sur le bouton Exécuter ou tapez Ctrl + E, MATLAB l'exécute immédiatement et le résultat renvoyé est -
ans = 1.4860e+04
MATLAB fournit des expressions spéciales pour certains symboles mathématiques, comme pi pour π, Inf pour ∞, i (et j) pour √-1 etc. Nan signifie «pas un nombre».
Utilisation du point-virgule (;) dans MATLAB
Le point-virgule (;) indique la fin de l'instruction. Toutefois, si vous souhaitez supprimer et masquer la sortie MATLAB d'une expression, ajoutez un point-virgule après l'expression.
Par exemple,
x = 3;
y = x + 5
Lorsque vous cliquez sur le bouton Exécuter ou tapez Ctrl + E, MATLAB l'exécute immédiatement et le résultat renvoyé est -
y = 8
Ajout de commentaires
Le symbole de pourcentage (%) est utilisé pour indiquer une ligne de commentaire. Par exemple,
x = 9 % assign the value 9 to x
Vous pouvez également écrire un bloc de commentaires à l'aide des opérateurs de commentaire de bloc% {et%}.
L'éditeur MATLAB comprend des outils et des éléments de menu contextuel pour vous aider à ajouter, supprimer ou modifier le format des commentaires.
Opérateurs et caractères spéciaux couramment utilisés
MATLAB prend en charge les opérateurs et caractères spéciaux couramment utilisés suivants -
Opérateur | Objectif |
---|---|
+ | Plus; opérateur d'addition. |
- | Moins; opérateur de soustraction. |
* | Opérateur de multiplication scalaire et matricielle. |
.* | Opérateur de multiplication de tableau. |
^ | Opérateur d'exponentiation scalaire et matricielle. |
.^ | Opérateur d'exponentiation de tableau. |
\ | Opérateur de division gauche. |
/ | Opérateur de division droite. |
.\ | Opérateur de division gauche du tableau. |
./ | Opérateur de division droite du tableau. |
: | Côlon; génère des éléments régulièrement espacés et représente une ligne ou une colonne entière. |
( ) | Parenthèses; englobe les arguments de fonction et les indices de tableau; remplace la priorité. |
[ ] | Supports; enclosures éléments de tableau. |
. | Virgule. |
… | Ellipse; opérateur de continuation de ligne |
, | Virgule; sépare les instructions et les éléments dans une ligne |
; | Point-virgule; sépare les colonnes et supprime l'affichage. |
% | Signe de pourcentage; désigne un commentaire et spécifie la mise en forme. |
_ | Citer le signe et transposer l'opérateur. |
._ | Opérateur de transposition non conjugué. |
= | Opérateur d'assignation. |
Variables spéciales et constantes
MATLAB prend en charge les variables et constantes spéciales suivantes -
Nom | Sens |
---|---|
ans | Réponse la plus récente. |
eps | Précision de la précision en virgule flottante. |
i,j | L'unité imaginaire √-1. |
Inf | Infini. |
NaN | Résultat numérique non défini (pas un nombre). |
pi | Le nombre π |
Nommer les variables
Les noms de variable se composent d'une lettre suivie d'un nombre quelconque de lettres, chiffres ou traits de soulignement.
MATLAB est case-sensitive.
Les noms de variables peuvent être de n'importe quelle longueur, cependant, MATLAB n'utilise que les N premiers caractères, où N est donné par la fonction namelengthmax.
Sauvegarder votre travail
le save La commande permet de sauvegarder toutes les variables de l'espace de travail, sous forme de fichier avec l'extension .mat, dans le répertoire courant.
Par exemple,
save myfile
Vous pouvez recharger le fichier à tout moment plus tard en utilisant le load commander.
load myfile
Dans l'environnement MATLAB, chaque variable est un tableau ou une matrice.
Vous pouvez attribuer des variables de manière simple. Par exemple,
x = 3 % defining x and initializing it with a value
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
x = 3
Il crée une matrice 1 par 1 nommée x et stocke la valeur 3 dans son élément. Vérifions un autre exemple,
x = sqrt(16) % defining x and initializing it with an expression
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
x = 4
Veuillez noter que -
Une fois qu'une variable est entrée dans le système, vous pouvez vous y référer ultérieurement.
Les variables doivent avoir des valeurs avant d'être utilisées.
Lorsqu'une expression renvoie un résultat qui n'est affecté à aucune variable, le système l'affecte à une variable nommée ans, qui peut être utilisée ultérieurement.
Par exemple,
sqrt(78)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans = 8.8318
Vous pouvez utiliser cette variable ans -
sqrt(78);
9876/ans
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans = 1118.2
Regardons un autre exemple -
x = 7 * 8;
y = x * 7.89
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
y = 441.84
Affectations multiples
Vous pouvez avoir plusieurs affectations sur la même ligne. Par exemple,
a = 2; b = 7; c = a * b
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
c = 14
J'ai oublié les variables!
le who La commande affiche tous les noms de variables que vous avez utilisés.
who
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
Your variables are:
a ans b c
le whos commande affiche un peu plus sur les variables -
- Variables actuellement en mémoire
- Type de chaque variable
- Mémoire allouée à chaque variable
- Qu'il s'agisse de variables complexes ou non
whos
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
Attr Name Size Bytes Class
==== ==== ==== ==== =====
a 1x1 8 double
ans 1x70 757 cell
b 1x1 8 double
c 1x1 8 double
Total is 73 elements using 781 bytes
le clear La commande supprime toutes les variables (ou les variables spécifiées) de la mémoire.
clear x % it will delete x, won't display anything
clear % it will delete all variables in the workspace
% peacefully and unobtrusively
Affectations longues
Les affectations longues peuvent être étendues à une autre ligne en utilisant des ellipses (...). Par exemple,
initial_velocity = 0;
acceleration = 9.8;
time = 20;
final_velocity = initial_velocity + acceleration * time
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
final_velocity = 196
La commande format
Par défaut, MATLAB affiche les nombres avec quatre valeurs décimales. Ceci est connu commeshort format.
Cependant, si vous voulez plus de précision, vous devez utiliser le format commander.
le format long La commande affiche 16 chiffres après la virgule.
Par exemple -
format long
x = 7 + 10/3 + 5 ^ 1.2
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
x = 17.2319816406394
Un autre exemple,
format short
x = 7 + 10/3 + 5 ^ 1.2
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
x = 17.232
le format bankLa commande arrondit les nombres à deux décimales. Par exemple,
format bank
daily_wage = 177.45;
weekly_wage = daily_wage * 6
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
weekly_wage = 1064.70
MATLAB affiche les grands nombres en utilisant la notation exponentielle.
le format short e La commande permet d'afficher sous forme exponentielle avec quatre décimales plus l'exposant.
Par exemple,
format short e
4.678 * 4.9
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans = 2.2922e+01
le format long eLa commande permet d'afficher sous forme exponentielle avec quatre décimales plus l'exposant. Par exemple,
format long e
x = pi
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
x = 3.141592653589793e+00
le format ratcommande donne l'expression rationnelle la plus proche résultant d'un calcul. Par exemple,
format rat
4.678 * 4.9
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans = 34177/1491
Création de vecteurs
Un vecteur est un tableau unidimensionnel de nombres. MATLAB permet de créer deux types de vecteurs -
- Vecteurs de lignes
- Vecteurs de colonnes
Row vectors sont créés en plaçant l'ensemble des éléments entre crochets, en utilisant un espace ou une virgule pour délimiter les éléments.
Par exemple,
r = [7 8 9 10 11]
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
r =
7 8 9 10 11
Un autre exemple,
r = [7 8 9 10 11];
t = [2, 3, 4, 5, 6];
res = r + t
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
res =
9 11 13 15 17
Column vectors sont créés en plaçant l'ensemble des éléments entre crochets, en utilisant un point-virgule (;) pour délimiter les éléments.
c = [7; 8; 9; 10; 11]
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
c =
7
8
9
10
11
Créer des matrices
Une matrice est un tableau bidimensionnel de nombres.
Dans MATLAB, une matrice est créée en entrant chaque ligne comme une séquence d'éléments séparés par un espace ou une virgule, et la fin d'une ligne est délimitée par un point-virgule. Par exemple, créons une matrice 3 par 3 comme -
m = [1 2 3; 4 5 6; 7 8 9]
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
m =
1 2 3
4 5 6
7 8 9
MATLAB est un programme interactif pour le calcul numérique et la visualisation de données. Vous pouvez entrer une commande en la tapant à l'invite MATLAB '>>' sur leCommand Window.
Dans cette section, nous fournirons des listes de commandes MATLAB générales couramment utilisées.
Commandes de gestion d'une session
MATLAB fournit diverses commandes pour gérer une session. Le tableau suivant fournit toutes ces commandes -
Commander | Objectif |
---|---|
clc | Efface la fenêtre de commande. |
clair | Supprime les variables de la mémoire. |
exister | Vérifie l'existence d'un fichier ou d'une variable. |
global | Déclare les variables globales. |
Aidez-moi | Recherche une rubrique d'aide. |
chercher | Recherche les entrées d'aide pour un mot-clé. |
quitter | Arrête MATLAB. |
qui | Répertorie les variables actuelles. |
qui | Liste les variables actuelles (affichage long). |
Commandes pour travailler avec le système
MATLAB fournit diverses commandes utiles pour travailler avec le système, comme enregistrer le travail en cours dans l'espace de travail sous forme de fichier et charger le fichier ultérieurement.
Il fournit également diverses commandes pour d'autres activités liées au système telles que l'affichage de la date, la liste des fichiers dans le répertoire, l'affichage du répertoire actuel, etc.
Le tableau suivant présente certaines commandes système couramment utilisées -
Commander | Objectif |
---|---|
CD | Modifie le répertoire actuel. |
Date | Affiche la date actuelle. |
effacer | Supprime un fichier. |
journal intime | Active / désactive l'enregistrement du fichier journal. |
dir | Répertorie tous les fichiers du répertoire actuel. |
charge | Charge les variables d'espace de travail à partir d'un fichier. |
chemin | Affiche le chemin de recherche. |
pwd | Affiche le répertoire actuel. |
enregistrer | Enregistre les variables d'espace de travail dans un fichier. |
type | Affiche le contenu d'un fichier. |
quoi | Répertorie tous les fichiers MATLAB dans le répertoire courant. |
wklread | Lit le fichier de feuille de calcul .wk1. |
Commandes d'entrée et de sortie
MATLAB fournit les commandes suivantes liées aux entrées et aux sorties -
Commander | Objectif |
---|---|
disp | Affiche le contenu d'un tableau ou d'une chaîne. |
fscanf | Lire les données formatées à partir d'un fichier. |
format | Contrôle le format d'affichage de l'écran. |
fprintf | Effectue des écritures formatées sur l'écran ou sur un fichier. |
contribution | Affiche les invites et attend l'entrée. |
; | Supprime la sérigraphie. |
le fscanf et fprintfLes commandes se comportent comme les fonctions C scanf et printf. Ils prennent en charge les codes de format suivants -
Code de format | Objectif |
---|---|
%s | Mettre en forme sous forme de chaîne. |
%d | Mettre en forme comme un entier. |
%f | Mettre en forme une valeur à virgule flottante. |
%e | Mettre en forme une valeur à virgule flottante en notation scientifique. |
%g | Format dans la forme la plus compacte:% f ou% e. |
\n | Insérez une nouvelle ligne dans la chaîne de sortie. |
\t | Insérez une tabulation dans la chaîne de sortie. |
La fonction format a les formes suivantes utilisées pour l'affichage numérique -
Fonction de format | Afficher jusqu'à |
---|---|
format court | Quatre chiffres décimaux (par défaut). |
format long | 16 chiffres décimaux. |
format court e | Cinq chiffres plus exposant. |
format long e | 16 chiffres plus exposants. |
banque de format | Deux chiffres décimaux. |
format + | Positif, négatif ou zéro. |
format rat | Approximation rationnelle. |
format compact | Supprime certains sauts de ligne. |
format libre | Réinitialise le mode d'affichage moins compact. |
Commandes Vector, Matrix et Array
Le tableau suivant présente diverses commandes utilisées pour travailler avec des tableaux, des matrices et des vecteurs -
Commander | Objectif |
---|---|
chat | Concatène les tableaux. |
trouver | Recherche des indices d'éléments différents de zéro. |
longueur | Calcule le nombre d'éléments. |
linspace | Crée un vecteur régulièrement espacé. |
espace journal | Crée un vecteur espacé logarithmiquement. |
max | Renvoie le plus grand élément. |
min | Renvoie le plus petit élément. |
prod | Produit de chaque colonne. |
remodeler | Modifie la taille. |
Taille | Calcule la taille du tableau. |
Trier | Trie chaque colonne. |
somme | Additionne chaque colonne. |
œil | Crée une matrice d'identité. |
ceux | Crée un tableau de ceux. |
zéros | Crée un tableau de zéros. |
traverser | Calcule les produits croisés matriciels. |
point | Calcule les produits matriciels matriciels. |
det | Calcule le déterminant d'un tableau. |
inv | Calcule l'inverse d'une matrice. |
pinv | Calcule la pseudo-inverse d'une matrice. |
rang | Calcule le rang d'une matrice. |
rref | Calcule la forme d'échelon de ligne réduite. |
cellule | Crée un tableau de cellules. |
celldisp | Affiche le tableau de cellules. |
cellule | Affiche une représentation graphique du tableau de cellules. |
num2cell | Convertit un tableau numérique en tableau de cellules. |
traiter | Correspond aux listes d'entrée et de sortie. |
iscell | Identifie la matrice de cellules. |
Commandes de traçage
MATLAB fournit de nombreuses commandes pour tracer des graphiques. Le tableau suivant présente certaines des commandes couramment utilisées pour le traçage -
Commander | Objectif |
---|---|
axe | Définit les limites des axes. |
fplot | Tracé intelligent des fonctions. |
la grille | Affiche le quadrillage. |
terrain | Génère un tracé xy. |
impression | Imprime le tracé ou enregistre le tracé dans un fichier. |
Titre | Place le texte en haut du tracé. |
xlabel | Ajoute une étiquette de texte à l'axe des x. |
ylabel | Ajoute une étiquette de texte à l'axe y. |
axes | Crée des objets axes. |
Fermer | Ferme le tracé actuel. |
ferme tout | Ferme toutes les parcelles. |
figure | Ouvre une nouvelle fenêtre de figure. |
gtext | Active le placement des étiquettes à la souris. |
tenir | Gèle le tracé actuel. |
Légende | Placement de la légende à la souris. |
rafraîchir | Redessine la fenêtre de la figure actuelle. |
ensemble | Spécifie les propriétés des objets tels que les axes. |
sous-tracé | Crée des tracés dans des sous-fenêtres. |
texte | Place la chaîne dans la figure. |
bar | Crée un graphique à barres. |
journal de bord | Crée un tracé log-log. |
polaire | Crée un tracé polaire. |
semilogx | Crée un tracé semilog. (abscisse logarithmique). |
sémilogie | Crée un tracé semilog. (ordonnée logarithmique). |
escaliers | Crée un tracé d'escalier. |
tige | Crée un tracé de tige. |
Jusqu'à présent, nous avons utilisé l'environnement MATLAB comme calculatrice. Cependant, MATLAB est également un langage de programmation puissant, ainsi qu'un environnement de calcul interactif.
Dans les chapitres précédents, vous avez appris à saisir des commandes à partir de l'invite de commande MATLAB. MATLAB vous permet également d'écrire une série de commandes dans un fichier et d'exécuter le fichier comme une unité complète, comme écrire une fonction et l'appeler.
Les fichiers M
MATLAB permet d'écrire deux types de fichiers programme -
Scripts - les fichiers de script sont des fichiers de programme avec .m extension. Dans ces fichiers, vous écrivez une série de commandes que vous souhaitez exécuter ensemble. Les scripts n'acceptent pas les entrées et ne renvoient aucune sortie. Ils opèrent sur les données de l'espace de travail.
Functions - les fichiers de fonctions sont également des fichiers de programme avec .m extension. Les fonctions peuvent accepter des entrées et des sorties de retour. Les variables internes sont locales à la fonction.
Vous pouvez utiliser l'éditeur MATLAB ou tout autre éditeur de texte pour créer votre .mdes dossiers. Dans cette section, nous aborderons les fichiers de script. Un fichier de script contient plusieurs lignes séquentielles de commandes MATLAB et d'appels de fonctions. Vous pouvez exécuter un script en tapant son nom sur la ligne de commande.
Création et exécution d'un fichier de script
Pour créer des fichiers de scripts, vous devez utiliser un éditeur de texte. Vous pouvez ouvrir l'éditeur MATLAB de deux manières -
- Utilisation de l'invite de commande
- Utilisation de l'IDE
Si vous utilisez l'invite de commande, tapez editdans l'invite de commande. Cela ouvrira l'éditeur. Vous pouvez directement taperedit puis le nom du fichier (avec l'extension .m)
edit
Or
edit <filename>
La commande ci-dessus créera le fichier dans le répertoire MATLAB par défaut. Si vous souhaitez stocker tous les fichiers programme dans un dossier spécifique, vous devrez fournir le chemin complet.
Créons un dossier nommé progs. Tapez les commandes suivantes à l'invite de commande (>>) -
mkdir progs % create directory progs under default directory
chdir progs % changing the current directory to progs
edit prog1.m % creating an m file named prog1.m
Si vous créez le fichier pour la première fois, MATLAB vous invite à le confirmer. Cliquez sur Oui.
Sinon, si vous utilisez l'EDI, choisissez NOUVEAU -> Script. Cela ouvre également l'éditeur et crée un fichier nommé Sans titre. Vous pouvez nommer et enregistrer le fichier après avoir tapé le code.
Tapez le code suivant dans l'éditeur -
NoOfStudents = 6000;
TeachingStaff = 150;
NonTeachingStaff = 20;
Total = NoOfStudents + TeachingStaff ...
+ NonTeachingStaff;
disp(Total);
Après avoir créé et enregistré le fichier, vous pouvez l'exécuter de deux manières:
En cliquant sur le Run bouton dans la fenêtre de l'éditeur ou
Tapez simplement le nom du fichier (sans extension) dans l'invite de commande: >> prog1
L'invite de la fenêtre de commande affiche le résultat -
6170
Exemple
Créez un fichier de script et tapez le code suivant -
a = 5; b = 7;
c = a + b
d = c + sin(b)
e = 5 * d
f = exp(-d)
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
c = 12
d = 12.657
e = 63.285
f = 3.1852e-06
MATLAB ne nécessite aucune déclaration de type ou instruction de dimension. Chaque fois que MATLAB rencontre un nouveau nom de variable, il crée la variable et alloue l'espace mémoire approprié.
Si la variable existe déjà, MATLAB remplace le contenu d'origine par un nouveau contenu et alloue un nouvel espace de stockage, si nécessaire.
Par exemple,
Total = 42
L'instruction ci-dessus crée une matrice 1 par 1 nommée «Total» et y stocke la valeur 42.
Types de données disponibles dans MATLAB
MATLAB fournit 15 types de données fondamentaux. Chaque type de données stocke des données sous la forme d'une matrice ou d'un tableau. La taille de cette matrice ou tableau est au minimum de 0 par 0 et cela peut atteindre une matrice ou un tableau de n'importe quelle taille.
Le tableau suivant présente les types de données les plus couramment utilisés dans MATLAB -
Sr.No. | Type de données et description |
---|---|
1 | int8 Entier signé 8 bits |
2 | uint8 Entier non signé 8 bits |
3 | int16 Entier signé 16 bits |
4 | uint16 Entier non signé 16 bits |
5 | int32 Entier signé 32 bits |
6 | uint32 Entier non signé 32 bits |
sept | int64 Entier signé 64 bits |
8 | uint64 Entier non signé 64 bits |
9 | single données numériques en simple précision |
dix | double données numériques à double précision |
11 | logical les valeurs logiques de 1 ou 0, représentent respectivement vrai et faux |
12 | char données de caractères (les chaînes sont stockées comme vecteur de caractères) |
13 | cell array tableau de cellules indexées, chacune capable de stocker un tableau d'une dimension et d'un type de données différents |
14 | structure Structures de type C, chaque structure ayant des champs nommés capables de stocker un tableau d'une dimension et d'un type de données différents |
15 | function handle pointeur vers une fonction |
16 | user classes objets construits à partir d'une classe définie par l'utilisateur |
17 | java classes objets construits à partir d'une classe Java |
Exemple
Créez un fichier de script avec le code suivant -
str = 'Hello World!'
n = 2345
d = double(n)
un = uint32(789.50)
rn = 5678.92347
c = int32(rn)
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
str = Hello World!
n = 2345
d = 2345
un = 790
rn = 5678.9
c = 5679
Conversion de type de données
MATLAB fournit diverses fonctions pour convertir, une valeur d'un type de données à un autre. Le tableau suivant présente les fonctions de conversion de type de données -
Fonction | Objectif |
---|---|
carboniser | Convertir en tableau de caractères (chaîne) |
int2str | Convertir des données entières en chaîne |
mat2str | Convertir la matrice en chaîne |
num2str | Convertir un nombre en chaîne |
str2double | Convertir la chaîne en valeur à double précision |
str2num | Convertir une chaîne en nombre |
native2unicode | Convertir les octets numériques en caractères Unicode |
unicode2native | Convertir les caractères Unicode en octets numériques |
base2dec | Convertir la chaîne numérique de base N en nombre décimal |
bin2dec | Convertir une chaîne de nombres binaires en nombre décimal |
dec2base | Convertir le nombre décimal en nombre de base N dans une chaîne |
dec2bin | Convertir un nombre décimal en nombre binaire en chaîne |
dec2hex | Convertir un nombre décimal en nombre hexadécimal dans une chaîne |
hex2dec | Convertir une chaîne de nombres hexadécimaux en nombre décimal |
hex2num | Convertir une chaîne de nombres hexadécimaux en nombre à double précision |
num2hex | Convertir les simples et les doubles en chaînes hexadécimales IEEE |
cell2mat | Convertir un tableau de cellules en tableau numérique |
cell2struct | Convertir un tableau de cellules en tableau de structure |
cellstr | Créer un tableau de cellules de chaînes à partir d'un tableau de caractères |
mat2cell | Convertir un tableau en tableau de cellules avec des cellules de tailles potentiellement différentes |
num2cell | Convertir un tableau en tableau de cellules avec des cellules de taille constante |
struct2cell | Convertir la structure en tableau de cellules |
Détermination des types de données
MATLAB fournit diverses fonctions pour identifier le type de données d'une variable.
Le tableau suivant fournit les fonctions permettant de déterminer le type de données d'une variable -
Fonction | Objectif |
---|---|
est | Détecter l'état |
est un | Déterminer si l'entrée est un objet de la classe spécifiée |
iscell | Déterminer si l'entrée est un tableau de cellules |
iscellstr | Déterminer si l'entrée est un tableau de cellules de chaînes |
ischar | Déterminer si l'élément est un tableau de caractères |
isfield | Déterminer si l'entrée est un champ de tableau de structure |
flotter | Déterminer si l'entrée est un tableau à virgule flottante |
ishghandle | Vrai pour les poignées d'objet Handle Graphics |
isinteger | Déterminer si l'entrée est un tableau d'entiers |
isjava | Déterminer si l'entrée est un objet Java |
islogique | Déterminer si l'entrée est un tableau logique |
isnumérique | Déterminer si l'entrée est un tableau numérique |
isobject | Déterminer si l'entrée est un objet MATLAB |
est vrai | Vérifiez si l'entrée est un tableau réel |
iscalaire | Déterminer si l'entrée est scalaire |
isstr | Déterminer si l'entrée est un tableau de caractères |
isstruct | Déterminer si l'entrée est un tableau de structure |
isvector | Déterminer si l'entrée est vectorielle |
classe | Déterminer la classe d'objet |
validateattributes | Vérifier la validité du tableau |
qui | Lister les variables dans l'espace de travail, avec des tailles et des types |
Exemple
Créez un fichier de script avec le code suivant -
x = 3
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
x = 23.54
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
x = [1 2 3]
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
x = 'Hello'
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
Lorsque vous exécutez le fichier, il produit le résultat suivant -
x = 3
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x = 23.540
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x =
1 2 3
ans = 0
ans = 1
ans = 1
ans = 0
x = Hello
ans = 0
ans = 0
ans = 1
ans = 0
ans = 0
Un opérateur est un symbole qui indique au compilateur d'effectuer des manipulations mathématiques ou logiques spécifiques. MATLAB est conçu pour fonctionner principalement sur des matrices et des tableaux entiers. Par conséquent, les opérateurs de MATLAB fonctionnent à la fois sur des données scalaires et non scalaires. MATLAB permet les types d'opérations élémentaires suivants -
- Opérateurs arithmétiques
- Opérateurs relationnels
- Opérateurs logiques
- Opérations au niveau du bit
- Définir les opérations
Opérateurs arithmétiques
MATLAB permet deux types différents d'opérations arithmétiques -
- Opérations arithmétiques matricielles
- Opérations arithmétiques de tableau
Les opérations arithmétiques matricielles sont les mêmes que celles définies en algèbre linéaire. Les opérations de tableau sont exécutées élément par élément, à la fois sur un tableau unidimensionnel et multidimensionnel.
Les opérateurs de matrice et les opérateurs de tableau sont différenciés par le symbole point (.). Cependant, comme l'opération d'addition et de soustraction est la même pour les matrices et les tableaux, l'opérateur est le même dans les deux cas. Le tableau suivant donne une brève description des opérateurs -
Afficher des exemples
Sr.No. | Opérateur et description |
---|---|
1 | + Addition ou plus unaire. A + B ajoute les valeurs stockées dans les variables A et B. A et B doivent avoir la même taille, sauf s'il s'agit d'un scalaire. Un scalaire peut être ajouté à une matrice de n'importe quelle taille. |
2 | - Soustraction ou moins unaire. AB soustrait la valeur de B de A. A et B doivent avoir la même taille, à moins qu'il ne s'agisse d'un scalaire. Un scalaire peut être soustrait d'une matrice de n'importe quelle taille. |
3 | * Multiplication matricielle. C = A * B est le produit algébrique linéaire des matrices A et B. Plus précisément,
Pour A et B non scalaires, le nombre de colonnes de A doit être égal au nombre de lignes de B. Un scalaire peut multiplier une matrice de n'importe quelle taille. |
4 | .* Multiplication de tableau. A. * B est le produit élément par élément des tableaux A et B. A et B doivent avoir la même taille, sauf si l'un d'eux est un scalaire. |
5 | / Division droite par barre oblique ou matrice. B / A est à peu près le même que B * inv (A). Plus précisément, B / A = (A '\ B') '. |
6 | ./ Division droite du tableau. A./B est la matrice avec les éléments A (i, j) / B (i, j). A et B doivent avoir la même taille, sauf si l'un d'eux est un scalaire. |
sept | \ Antislash ou division gauche matricielle. Si A est une matrice carrée, A \ B est à peu près le même que inv (A) * B, sauf qu'il est calculé d'une manière différente. Si A est une matrice n par n et B est un vecteur colonne à n composantes, ou une matrice à plusieurs de ces colonnes, alors X = A \ B est une solution à l'équation AX = B . Un message d'avertissement s'affiche si A est mal mis à l'échelle ou presque singulier. |
8 | .\ Division du tableau à gauche. A. \ B est la matrice avec les éléments B (i, j) / A (i, j). A et B doivent avoir la même taille, sauf si l'un d'eux est un scalaire. |
9 | ^ Puissance de la matrice. X ^ p est X à la puissance p, si p est un scalaire. Si p est un entier, la puissance est calculée par quadrillage répété. Si l'entier est négatif, X est inversé en premier. Pour les autres valeurs de p, le calcul fait intervenir des valeurs propres et des vecteurs propres, tels que si [V, D] = eig (X), alors X ^ p = V * D. ^ p / V. |
dix | .^ Puissance de la baie. A. ^ B est la matrice avec les éléments A (i, j) à la puissance B (i, j). A et B doivent avoir la même taille, sauf si l'un d'eux est un scalaire. |
11 | ' Matrice transposée. A 'est la transposée algébrique linéaire de A. Pour les matrices complexes, c'est la transposée conjuguée complexe. |
12 | .' Transposer le tableau. UNE.' est le tableau transposé de A. Pour les matrices complexes, cela n'implique pas de conjugaison. |
Opérateurs relationnels
Les opérateurs relationnels peuvent également travailler sur des données scalaires et non scalaires. Les opérateurs relationnels pour les tableaux effectuent des comparaisons élément par élément entre deux tableaux et renvoient un tableau logique de la même taille, avec des éléments définis sur 1 logique (vrai) où la relation est vraie et les éléments définis sur 0 logique (faux) là où elle est ne pas.
Le tableau suivant présente les opérateurs relationnels disponibles dans MATLAB -
Afficher des exemples
Sr.No. | Opérateur et description |
---|---|
1 | < Moins que |
2 | <= Inférieur ou égal à |
3 | > Plus grand que |
4 | >= Plus grand ou égal à |
5 | == Égal à |
6 | ~= Pas égal à |
Opérateurs logiques
MATLAB propose deux types d'opérateurs et de fonctions logiques -
Élément par élément - Ces opérateurs opèrent sur les éléments correspondants des tableaux logiques.
Court-circuit - Ces opérateurs opèrent sur des expressions scalaires et logiques.
Les opérateurs logiques élément par élément opèrent élément par élément sur des tableaux logiques. Les symboles &, | et ~ sont les opérateurs de tableau logique AND, OR et NOT.
Les opérateurs logiques de court-circuit permettent le court-circuit sur les opérations logiques. Les symboles && et || sont les opérateurs logiques de court-circuit ET et OU.
Afficher des exemples
Opérations au niveau du bit
Les opérateurs au niveau du bit fonctionnent sur les bits et effectuent des opérations bit par bit. Les tables de vérité pour &, | et ^ sont les suivantes:
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
Supposons que A = 60; et B = 13; Maintenant au format binaire, ils seront comme suit -
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~ A = 1100 0011
MATLAB fournit diverses fonctions pour les opérations bit par bit comme les opérations 'bitwise et', 'bitwise ou' et 'bitwise not', les opérations de décalage, etc.
Le tableau suivant montre les opérations binaires couramment utilisées -
Afficher des exemples
Fonction | Objectif |
---|---|
bitand (a, b) | ET bit par bit des entiers a et b |
bitcmp (a) | Complément bit par bit d' un |
bitget (a, pos) | Obtenir le bit à la position spécifiée pos , dans le tableau d'entiers a |
bitor (a, b) | OU bit par bit des entiers a et b |
jeu de bits (a, pos) | Définir le bit à l'emplacement spécifique pos d' un |
décalage de bits (a, k) | Renvoie un décalage vers la gauche de k bits, ce qui équivaut à multiplier par 2 k . Les valeurs négatives de k correspondent au décalage des bits vers la droite ou à la division par 2 | k | et arrondir à l'entier le plus proche vers l'infini négatif. Tous les bits de débordement sont tronqués. |
bitxor (a, b) | XOR bit par bit des entiers a et b |
swapbytes | Ordre des octets de permutation |
Définir les opérations
MATLAB fournit diverses fonctions pour les opérations d'ensemble, comme l'union, l'intersection et le test d'appartenance à l'ensemble, etc.
Le tableau suivant présente certaines opérations de set couramment utilisées -
Afficher des exemples
Sr.No. | Description de la fonction |
---|---|
1 | intersect(A,B) Définir l'intersection de deux tableaux; renvoie les valeurs communes à A et B. Les valeurs renvoyées sont dans l'ordre trié. |
2 | intersect(A,B,'rows') Traite chaque ligne de A et chaque ligne de B comme des entités uniques et renvoie les lignes communes à A et B. Les lignes de la matrice retournée sont triées. |
3 | ismember(A,B) Renvoie un tableau de la même taille que A, contenant 1 (vrai) où les éléments de A se trouvent dans B. Ailleurs, il renvoie 0 (faux). |
4 | ismember(A,B,'rows') Traite chaque ligne de A et chaque ligne de B comme des entités uniques et renvoie un vecteur contenant 1 (vrai) où les lignes de la matrice A sont également des lignes de B. Ailleurs, il renvoie 0 (faux). |
5 | issorted(A) Renvoie 1 logique (vrai) si les éléments de A sont triés et 0 logique (faux) dans le cas contraire. L'entrée A peut être un vecteur ou un tableau de cellules N-par-1 ou 1-par-N de chaînes.A is considered to be sorted if A et la sortie de tri (A) sont égales. |
6 | issorted(A, 'rows') Renvoie 1 logique (vrai) si les lignes de la matrice bidimensionnelle A sont triées, et 0 logique (faux) dans le cas contraire. Matrix A is considered to be sorted if A et la sortie des sortrows (A) sont égales. |
sept | setdiff(A,B) Définit la différence de deux tableaux; renvoie les valeurs de A qui ne sont pas de B. Les valeurs du tableau renvoyé sont triées. |
8 | setdiff(A,B,'rows') Traite chaque ligne de A et chaque ligne de B comme des entités uniques et renvoie les lignes de A qui ne sont pas dans B. Les lignes de la matrice renvoyée sont triées. L'option 'rows' ne prend pas en charge les tableaux de cellules. |
9 | setxor Définit le OU exclusif de deux tableaux |
dix | union Définit l'union de deux tableaux |
11 | unique Valeurs uniques dans le tableau |
Les structures de prise de décision exigent que le programmeur spécifie une ou plusieurs conditions à évaluer ou à tester par le programme, ainsi qu'une ou plusieurs instructions à exécuter si la condition est jugée vraie, et éventuellement d'autres instructions à exécuter si le condition est considérée comme fausse.
Voici la forme générale d'une structure de prise de décision typique trouvée dans la plupart des langages de programmation -
MATLAB fournit les types suivants d'énoncés décisionnels. Cliquez sur les liens suivants pour vérifier leur détail -
Sr.No. | Déclaration et description |
---|---|
1 | if ... instruction de fin Un if ... end statement se compose d'une expression booléenne suivie d'une ou plusieurs instructions. |
2 | if ... else ... instruction de fin Un if statement peut être suivi d'une option else statement, qui s'exécute lorsque l'expression booléenne est fausse. |
3 | If ... elseif ... elseif ... else ... instructions de fin Un if l'instruction peut être suivie d'un (ou plusieurs) optionnel elseif... Et un else instruction, qui est très utile pour tester diverses conditions. |
4 | instructions if imbriquées Vous pouvez en utiliser un if ou elseif déclaration dans un autre if ou elseif déclaration (s). |
5 | instruction switch UNE switch L'instruction permet à une variable d'être testée pour l'égalité par rapport à une liste de valeurs. |
6 | instructions de commutateur imbriquées Vous pouvez en utiliser un switch déclaration dans un autre switch déclaration (s). |
Il peut arriver que vous deviez exécuter un bloc de code plusieurs fois. En général, les instructions sont exécutées de manière séquentielle. La première instruction d'une fonction est exécutée en premier, suivie de la seconde, et ainsi de suite.
Les langages de programmation fournissent diverses structures de contrôle qui permettent des chemins d'exécution plus compliqués.
Une instruction de boucle nous permet d'exécuter une instruction ou un groupe d'instructions plusieurs fois et voici la forme générale d'une instruction de boucle dans la plupart des langages de programmation -
MATLAB fournit les types de boucles suivants pour gérer les exigences de bouclage. Cliquez sur les liens suivants pour vérifier leur détail -
Sr.No. | Type de boucle et description |
---|---|
1 | boucle while Répète une instruction ou un groupe d'instructions tant qu'une condition donnée est vraie. Il teste la condition avant d'exécuter le corps de la boucle. |
2 | pour boucle Exécute une séquence d'instructions plusieurs fois et abrége le code qui gère la variable de boucle. |
3 | boucles imbriquées Vous pouvez utiliser une ou plusieurs boucles dans n'importe quelle autre boucle. |
Déclarations de contrôle de boucle
Les instructions de contrôle de boucle modifient l'exécution de sa séquence normale. Lorsque l'exécution quitte une étendue, tous les objets automatiques qui ont été créés dans cette étendue sont détruits.
MATLAB prend en charge les instructions de contrôle suivantes. Cliquez sur les liens suivants pour vérifier leurs détails.
Sr.No. | Déclaration de contrôle et description |
---|---|
1 | déclaration break Met fin au loop et transfère l'exécution à l'instruction immédiatement après la boucle. |
2 | continue déclaration Force la boucle à ignorer le reste de son corps et à retester immédiatement son état avant de réitérer. |
Un vecteur est un tableau unidimensionnel de nombres. MATLAB permet de créer deux types de vecteurs -
- Vecteurs de lignes
- Vecteurs de colonnes
Vecteurs de lignes
Row vectors sont créés en plaçant l'ensemble des éléments entre crochets, en utilisant un espace ou une virgule pour délimiter les éléments.
r = [7 8 9 10 11]
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
r =
7 8 9 10 11
Vecteurs de colonnes
Column vectors sont créés en plaçant l'ensemble des éléments entre crochets, en utilisant un point-virgule pour délimiter les éléments.
c = [7; 8; 9; 10; 11]
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
c =
7
8
9
10
11
Référencer les éléments d'un vecteur
Vous pouvez référencer un ou plusieurs éléments d'un vecteur de plusieurs manières. La i ème composante d'un vecteur v est appelée v (i). Par exemple -
v = [ 1; 2; 3; 4; 5; 6]; % creating a column vector of 6 elements
v(3)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans = 3
Lorsque vous référencez un vecteur avec un deux-points, tel que v (:), tous les composants du vecteur sont répertoriés.
v = [ 1; 2; 3; 4; 5; 6]; % creating a column vector of 6 elements
v(:)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
1
2
3
4
5
6
MATLAB vous permet de sélectionner une gamme d'éléments à partir d'un vecteur.
Par exemple, créons un vecteur ligne rv de 9 éléments, puis nous référencerons les éléments 3 à 7 en écrivantrv(3:7)et créez un nouveau vecteur nommé sub_rv .
rv = [1 2 3 4 5 6 7 8 9];
sub_rv = rv(3:7)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
sub_rv =
3 4 5 6 7
Opérations vectorielles
Dans cette section, discutons des opérations vectorielles suivantes -
Addition et soustraction de vecteurs
Multiplication scalaire des vecteurs
Transposer un vecteur
Ajout de vecteurs
Ampleur d'un vecteur
Produit de point vectoriel
Vecteurs avec des éléments uniformément espacés
Une matrice est un tableau bidimensionnel de nombres.
Dans MATLAB, vous créez une matrice en entrant des éléments dans chaque ligne sous forme de nombres délimités par des virgules ou des espaces et en utilisant des points-virgules pour marquer la fin de chaque ligne.
Par exemple, créons une matrice 4 en 5 a -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
a =
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
Référencer les éléments d'une matrice
Pour référencer un élément de la m ème ligne et de la n ème colonne, d'une matrice mx , on écrit -
mx(m, n);
Par exemple, pour faire référence à l'élément de la 2 ème ligne et de la 5 ème colonne, de la matrice a , telle que créée dans la dernière section, on tape -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(2,5)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans = 6
Pour référencer tous les éléments de la m ème colonne, nous tapons A (:, m).
Créons un vecteur colonne v, à partir des éléments de la 4 ème ligne de la matrice a -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
v = a(:,4)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
v =
4
5
6
7
Vous pouvez également sélectionner les éléments dans la m ème à la n ième colonnes, pour cela nous écrivons -
a(:,m:n)
Créons une matrice plus petite en prenant les éléments des deuxième et troisième colonnes -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(:, 2:3)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
2 3
3 4
4 5
5 6
De la même manière, vous pouvez créer une sous-matrice en prenant une sous-partie d'une matrice.
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(:, 2:3)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
2 3
3 4
4 5
5 6
De la même manière, vous pouvez créer une sous-matrice en prenant une sous-partie d'une matrice.
Par exemple, créons une sous-matrice sa prenant la sous-partie interne de a -
3 4 5
4 5 6
Pour ce faire, écrivez -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
sa = a(2:3,2:4)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
sa =
3 4 5
4 5 6
Suppression d'une ligne ou d'une colonne dans une matrice
Vous pouvez supprimer une ligne ou une colonne entière d'une matrice en affectant un ensemble vide d'accolades [] à cette ligne ou colonne. Fondamentalement, [] désigne un tableau vide.
Par exemple, supprimons la quatrième ligne d'un -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a( 4 , : ) = []
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
a =
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
Ensuite, supprimons la cinquième colonne d'un -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(: , 5)=[]
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
a =
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
Exemple
Dans cet exemple, créons une matrice 3 par 3 m, puis nous allons copier les deuxième et troisième lignes de cette matrice deux fois pour créer une matrice 4 sur 3.
Créez un fichier de script avec le code suivant -
a = [ 1 2 3 ; 4 5 6; 7 8 9];
new_mat = a([2,3,2,3],:)
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
new_mat =
4 5 6
7 8 9
4 5 6
7 8 9
Opérations matricielles
Dans cette section, discutons des opérations matricielles de base et couramment utilisées suivantes -
Addition et soustraction de matrices
Division des matrices
Opérations scalaires des matrices
Transposer une matrice
Matrices de concaténation
Multiplication matricielle
Déterminant d'une matrice
Inverse d'une matrice
Toutes les variables de tous les types de données dans MATLAB sont des tableaux multidimensionnels. Un vecteur est un tableau à une dimension et une matrice est un tableau à deux dimensions.
Nous avons déjà discuté des vecteurs et des matrices. Dans ce chapitre, nous aborderons les tableaux multidimensionnels. Cependant, avant cela, laissez-nous discuter de certains types spéciaux de tableaux.
Tableaux spéciaux dans MATLAB
Dans cette section, nous discuterons de certaines fonctions qui créent des tableaux spéciaux. Pour toutes ces fonctions, un seul argument crée un tableau carré, des arguments doubles créent un tableau rectangulaire.
le zeros() La fonction crée un tableau de tous les zéros -
Par exemple -
zeros(5)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
le ones() La fonction crée un tableau de tous -
Par exemple -
ones(4,3)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
1 1 1
1 1 1
1 1 1
1 1 1
le eye() fonction crée une matrice d'identité.
Par exemple -
eye(4)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
le rand() crée un tableau de nombres aléatoires uniformément distribués sur (0,1) -
Par exemple -
rand(3, 5)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
0.8147 0.9134 0.2785 0.9649 0.9572
0.9058 0.6324 0.5469 0.1576 0.4854
0.1270 0.0975 0.9575 0.9706 0.8003
Un carré magique
UNE magic square est un carré qui produit la même somme, lorsque ses éléments sont ajoutés en ligne, en colonne ou en diagonale.
le magic()La fonction crée un tableau carré magique. Il prend un argument singulier qui donne la taille du carré. L'argument doit être un scalaire supérieur ou égal à 3.
magic(4)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Tableaux multidimensionnels
Un tableau ayant plus de deux dimensions est appelé un tableau multidimensionnel dans MATLAB. Les tableaux multidimensionnels dans MATLAB sont une extension de la matrice bidimensionnelle normale.
Généralement, pour générer un tableau multidimensionnel, nous créons d'abord un tableau bidimensionnel et l'étendons.
Par exemple, créons un tableau à deux dimensions a.
a = [7 9 5; 6 1 9; 4 3 2]
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
a =
7 9 5
6 1 9
4 3 2
Le tableau a est un tableau 3 par 3; nous pouvons ajouter une troisième dimension à a , en fournissant les valeurs comme -
a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
a =
ans(:,:,1) =
0 0 0
0 0 0
0 0 0
ans(:,:,2) =
1 2 3
4 5 6
7 8 9
Nous pouvons également créer des tableaux multidimensionnels en utilisant les fonctions uns (), zeros () ou rand ().
Par exemple,
b = rand(4,3,2)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
b(:,:,1) =
0.0344 0.7952 0.6463
0.4387 0.1869 0.7094
0.3816 0.4898 0.7547
0.7655 0.4456 0.2760
b(:,:,2) =
0.6797 0.4984 0.2238
0.6551 0.9597 0.7513
0.1626 0.3404 0.2551
0.1190 0.5853 0.5060
Nous pouvons également utiliser le cat()fonction pour créer des tableaux multidimensionnels. Il concatène une liste de tableaux le long d'une dimension spécifiée -
La syntaxe de la fonction cat () est -
B = cat(dim, A1, A2...)
Où,
B est le nouveau tableau créé
A1 , A2 , ... sont les tableaux à concaténer
dim est la dimension le long de laquelle concaténer les tableaux
Exemple
Créez un fichier de script et tapez le code suivant dedans -
a = [9 8 7; 6 5 4; 3 2 1];
b = [1 2 3; 4 5 6; 7 8 9];
c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])
Lorsque vous exécutez le fichier, il affiche -
c(:,:,1) =
9 8 7
6 5 4
3 2 1
c(:,:,2) =
1 2 3
4 5 6
7 8 9
c(:,:,3) =
2 3 1
4 7 8
3 9 0
Fonctions de tableau
MATLAB fournit les fonctions suivantes pour trier, faire pivoter, permuter, remodeler ou déplacer le contenu d'un tableau.
Fonction | Objectif |
---|---|
longueur | Longueur du vecteur ou de la plus grande dimension de tableau |
ndims | Nombre de dimensions du tableau |
numel | Nombre d'éléments du tableau |
Taille | Dimensions du tableau |
iscolumn | Détermine si l'entrée est un vecteur de colonne |
est vide | Détermine si le tableau est vide |
ismatrix | Détermine si l'entrée est une matrice |
isrow | Détermine si l'entrée est un vecteur de ligne |
iscalaire | Détermine si l'entrée est scalaire |
isvector | Détermine si l'entrée est vectorielle |
blkdiag | Construit une matrice diagonale de bloc à partir des arguments d'entrée |
circshift | Décale le tableau de manière circulaire |
ctransposer | Transposer conjugué complexe |
diag | Matrices diagonales et diagonales de matrice |
flipdim | Inverse le tableau selon la dimension spécifiée |
fliplr | Inverse la matrice de gauche à droite |
flipud | Retourne la matrice de haut en bas |
ipermute | Inverse les dimensions permutées du tableau ND |
permuter | Réorganise les dimensions de la matrice ND |
repmat | Répliques et tableau de tuiles |
remodeler | Remodèle le tableau |
pourriture90 | Fait pivoter la matrice de 90 degrés |
shiftdim | Décale les dimensions |
est trié | Détermine si les éléments de l'ensemble sont triés |
Trier | Trie les éléments du tableau dans l'ordre croissant ou décroissant |
sortrows | Trie les lignes par ordre croissant |
écraser | Supprime les dimensions singleton |
transposer | Transposer |
vectoriser | Vectorise l'expression |
Exemples
Les exemples suivants illustrent certaines des fonctions mentionnées ci-dessus.
Length, Dimension and Number of elements −
Créez un fichier de script et tapez le code suivant dedans -
x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9];
length(x) % length of x vector
y = rand(3, 4, 5, 2);
ndims(y) % no of dimensions in array y
s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab'];
numel(s) % no of elements in s
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
ans = 8
ans = 4
ans = 23
Circular Shifting of the Array Elements −
Créez un fichier de script et tapez le code suivant dedans -
a = [1 2 3; 4 5 6; 7 8 9] % the original array a
b = circshift(a,1) % circular shift first dimension values down by 1.
c = circshift(a,[1 -1]) % circular shift first dimension values % down by 1
% and second dimension values to the left % by 1.
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
a =
1 2 3
4 5 6
7 8 9
b =
7 8 9
1 2 3
4 5 6
c =
8 9 7
2 3 1
5 6 4
Tri des tableaux
Créez un fichier de script et tapez le code suivant dedans -
v = [ 23 45 12 9 5 0 19 17] % horizontal vector
sort(v) % sorting v
m = [2 6 4; 5 3 9; 2 0 1] % two dimensional array
sort(m, 1) % sorting m along the row
sort(m, 2) % sorting m along the column
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
v =
23 45 12 9 5 0 19 17
ans =
0 5 9 12 17 19 23 45
m =
2 6 4
5 3 9
2 0 1
ans =
2 0 1
2 3 4
5 6 9
ans =
2 4 6
3 5 9
0 1 2
Tableau de cellules
Les tableaux de cellules sont des tableaux de cellules indexées où chaque cellule peut stocker un tableau de dimensions et de types de données différents.
le cellLa fonction est utilisée pour créer un tableau de cellules. La syntaxe de la fonction de cellule est -
C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)
Où,
C est le tableau de cellules;
dim est un entier scalaire ou un vecteur d'entiers qui spécifie les dimensions du tableau de cellules C;
dim1, ..., dimN sont des entiers scalaires qui spécifient les dimensions de C;
obj est l'un des suivants -
- Tableau ou objet Java
- Tableau .NET de type System.String ou System.Object
Exemple
Créez un fichier de script et tapez le code suivant dedans -
c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
c =
{
[1,1] = Red
[2,1] = 1
[1,2] = Blue
[2,2] = 2
[1,3] = Green
[2,3] = 3
[1,4] = Yellow
[2,4] = 4
[1,5] = White
[2,5] = 5
}
Accès aux données dans les tableaux de cellules
Il existe deux façons de faire référence aux éléments d'un tableau de cellules -
- Placer les index dans la première parenthèse (), pour faire référence à des ensembles de cellules
- Mettre les index entre accolades {}, pour faire référence aux données dans des cellules individuelles
Lorsque vous placez les index dans le premier crochet, cela fait référence à l'ensemble de cellules.
Les indices de tableau de cellules entre parenthèses lisses font référence à des ensembles de cellules.
Par exemple -
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
{
[1,1] = Red
[2,1] = 1
[1,2] = Blue
[2,2] = 2
}
Vous pouvez également accéder au contenu des cellules en les indexant avec des accolades.
Par exemple -
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans = Blue
ans = Green
ans = Yellow
le colon(:)est l'un des opérateurs les plus utiles de MATLAB. Il est utilisé pour créer des vecteurs, des tableaux d'indices etspecify for iterations.
Si vous souhaitez créer un vecteur de ligne, contenant des entiers de 1 à 10, vous écrivez -
1:10
MATLAB exécute l'instruction et renvoie un vecteur ligne contenant les entiers de 1 à 10 -
ans =
1 2 3 4 5 6 7 8 9 10
Si vous souhaitez spécifier une valeur d'incrément différente de un, par exemple -
100: -5: 50
MATLAB exécute l'instruction et renvoie le résultat suivant -
ans =
100 95 90 85 80 75 70 65 60 55 50
Prenons un autre exemple -
0:pi/8:pi
MATLAB exécute l'instruction et renvoie le résultat suivant -
ans =
Columns 1 through 7
0 0.3927 0.7854 1.1781 1.5708 1.9635 2.3562
Columns 8 through 9
2.7489 3.1416
Vous pouvez utiliser l'opérateur deux-points pour créer un vecteur d'indices pour sélectionner des lignes, des colonnes ou des éléments de tableaux.
Le tableau suivant décrit son utilisation à cet effet (ayons une matrice A) -
Format | Objectif |
---|---|
A(:,j) | est la jème colonne de A. |
A(i,:) | est la ième rangée de A. |
A(:,:) | est le tableau bidimensionnel équivalent. Pour les matrices, c'est la même chose que A. |
A(j:k) | est A (j), A (j + 1), ..., A (k). |
A(:,j:k) | est A (:, j), A (:, j + 1), ..., A (:, k). |
A(:,:,k) | est la k ème page du tableau tridimensionnel A. |
A(i,j,k,:) | est un vecteur dans un tableau à quatre dimensions A. Le vecteur comprend A (i, j, k, 1), A (i, j, k, 2), A (i, j, k, 3), et ainsi de suite. |
A(:) | est tous les éléments de A, considérés comme une seule colonne. Sur le côté gauche d'une instruction d'affectation, A (:) remplit A, en conservant sa forme d'avant. Dans ce cas, le côté droit doit contenir le même nombre d'éléments que A. |
Exemple
Créez un fichier de script et tapez le code suivant -
A = [1 2 3 4; 4 5 6 7; 7 8 9 10]
A(:,2) % second column of A
A(:,2:3) % second and third column of A
A(2:3,2:3) % second and third rows and second and third columns
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
A =
1 2 3 4
4 5 6 7
7 8 9 10
ans =
2
5
8
ans =
2 3
5 6
8 9
ans =
5 6
8 9
MATLAB prend en charge diverses classes numériques qui incluent des entiers signés et non signés et des nombres à virgule flottante simple précision et double précision. Par défaut, MATLAB stocke toutes les valeurs numériques sous forme de nombres à virgule flottante double précision.
Vous pouvez choisir de stocker n'importe quel nombre ou tableau de nombres sous forme d'entiers ou de nombres à simple précision.
Tous les types numériques prennent en charge les opérations de tableau de base et les opérations mathématiques.
Conversion en divers types de données numériques
MATLAB fournit les fonctions suivantes pour convertir en différents types de données numériques -
Fonction | Objectif |
---|---|
double | Convertit en nombre double précision |
Célibataire | Convertit en un nombre de précision unique |
int8 | Convertit en entier signé 8 bits |
int16 | Convertit en entier signé 16 bits |
int32 | Convertit en entier signé 32 bits |
int64 | Convertit en entier signé 64 bits |
uint8 | Convertit en entier non signé 8 bits |
uint16 | Convertit en entier non signé 16 bits |
uint32 | Convertit en entier non signé 32 bits |
uint64 | Convertit en entier non signé 64 bits |
Exemple
Créez un fichier de script et tapez le code suivant -
x = single([5.32 3.47 6.28]) .* 7.5
x = double([5.32 3.47 6.28]) .* 7.5
x = int8([5.32 3.47 6.28]) .* 7.5
x = int16([5.32 3.47 6.28]) .* 7.5
x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
x =
39.900 26.025 47.100
x =
39.900 26.025 47.100
x =
38 23 45
x =
38 23 45
x =
38 23 45
x =
38 23 45
Exemple
Prolongeons un peu plus l'exemple précédent. Créez un fichier de script et tapez le code suivant -
x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
x = num2cell(x)
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
x =
38 23 45
x =
38 23 45
x =
{
[1,1] = 38
[1,2] = 23
[1,3] = 45
}
Les plus petits et les plus grands nombres entiers
Les fonctions intmax() et intmin() renvoie les valeurs maximum et minimum qui peuvent être représentées avec tous les types de nombres entiers.
Les deux fonctions prennent le type de données entier comme argument, par exemple, intmax (int8) ou intmin (int64) et renvoient les valeurs maximale et minimale que vous pouvez représenter avec le type de données entier.
Exemple
L'exemple suivant illustre comment obtenir les valeurs les plus petites et les plus grandes d'entiers. Créez un fichier de script et écrivez-y le code suivant -
% displaying the smallest and largest signed integer data
str = 'The range for int8 is:\n\t%d to %d ';
sprintf(str, intmin('int8'), intmax('int8'))
str = 'The range for int16 is:\n\t%d to %d ';
sprintf(str, intmin('int16'), intmax('int16'))
str = 'The range for int32 is:\n\t%d to %d ';
sprintf(str, intmin('int32'), intmax('int32'))
str = 'The range for int64 is:\n\t%d to %d ';
sprintf(str, intmin('int64'), intmax('int64'))
% displaying the smallest and largest unsigned integer data
str = 'The range for uint8 is:\n\t%d to %d ';
sprintf(str, intmin('uint8'), intmax('uint8'))
str = 'The range for uint16 is:\n\t%d to %d ';
sprintf(str, intmin('uint16'), intmax('uint16'))
str = 'The range for uint32 is:\n\t%d to %d ';
sprintf(str, intmin('uint32'), intmax('uint32'))
str = 'The range for uint64 is:\n\t%d to %d ';
sprintf(str, intmin('uint64'), intmax('uint64'))
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
ans = The range for int8 is:
-128 to 127
ans = The range for int16 is:
-32768 to 32767
ans = The range for int32 is:
-2147483648 to 2147483647
ans = The range for int64 is:
0 to 0
ans = The range for uint8 is:
0 to 255
ans = The range for uint16 is:
0 to 65535
ans = The range for uint32 is:
0 to -1
ans = The range for uint64 is:
0 to 18446744073709551616
Les plus petits et les plus grands nombres à virgule flottante
Les fonctions realmax() et realmin() renvoie les valeurs maximales et minimales pouvant être représentées par des nombres à virgule flottante.
Les deux fonctions lorsqu'elles sont appelées avec l'argument 'single', renvoient les valeurs maximum et minimum que vous pouvez représenter avec le type de données simple précision et lorsqu'elles sont appelées avec l'argument 'double', renvoient les valeurs maximum et minimum que vous pouvez représenter avec le type de données double précision.
Exemple
L'exemple suivant illustre comment obtenir les nombres à virgule flottante les plus petits et les plus grands. Créez un fichier de script et écrivez-y le code suivant -
% displaying the smallest and largest single-precision
% floating point number
str = 'The range for single is:\n\t%g to %g and\n\t %g to %g';
sprintf(str, -realmax('single'), -realmin('single'), ...
realmin('single'), realmax('single'))
% displaying the smallest and largest double-precision
% floating point number
str = 'The range for double is:\n\t%g to %g and\n\t %g to %g';
sprintf(str, -realmax('double'), -realmin('double'), ...
realmin('double'), realmax('double'))
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
ans = The range for single is:
-3.40282e+38 to -1.17549e-38 and
1.17549e-38 to 3.40282e+38
ans = The range for double is:
-1.79769e+308 to -2.22507e-308 and
2.22507e-308 to 1.79769e+308
Créer une chaîne de caractères est assez simple dans MATLAB. En fait, nous l'avons utilisé à plusieurs reprises. Par exemple, vous tapez ce qui suit dans l'invite de commande -
my_string = 'Tutorials Point'
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
my_string = Tutorials Point
MATLAB considère toutes les variables comme des tableaux et les chaînes sont considérées comme des tableaux de caractères. Utilisons lewhos commande pour vérifier la variable créée ci-dessus -
whos
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
Name Size Bytes Class Attributes
my_string 1x16 32 char
Fait intéressant, vous pouvez utiliser des fonctions de conversion numérique telles que uint8 ou uint16pour convertir les caractères de la chaîne en leurs codes numériques. lechar la fonction convertit le vecteur entier en caractères -
Exemple
Créez un fichier de script et tapez le code suivant dedans -
my_string = 'Tutorial''s Point';
str_ascii = uint8(my_string) % 8-bit ascii values
str_back_to_char= char(str_ascii)
str_16bit = uint16(my_string) % 16-bit ascii values
str_back_to_char = char(str_16bit)
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
str_ascii =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
str_16bit =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
Tableau de caractères rectangulaire
Les chaînes dont nous avons discuté jusqu'ici sont des tableaux de caractères unidimensionnels; cependant, nous devons stocker plus que cela. Nous devons stocker plus de données textuelles dimensionnelles dans notre programme. Ceci est réalisé en créant des tableaux de caractères rectangulaires.
Le moyen le plus simple de créer un tableau de caractères rectangulaire consiste à concaténer au moins deux tableaux de caractères unidimensionnels, verticalement ou horizontalement, selon les besoins.
Vous pouvez combiner des chaînes verticalement de l'une des manières suivantes:
Utilisation de l'opérateur de concaténation MATLAB []et séparer chaque ligne par un point-virgule (;). Veuillez noter que dans cette méthode, chaque ligne doit contenir le même nombre de caractères. Pour les chaînes de différentes longueurs, vous devez compléter avec des caractères d'espacement si nécessaire.
En utilisant le charfonction. Si les chaînes sont de longueurs différentes, char remplit les chaînes les plus courtes avec des espaces de fin de sorte que chaque ligne ait le même nombre de caractères.
Exemple
Créez un fichier de script et tapez le code suivant dedans -
doc_profile = ['Zara Ali '; ...
'Sr. Surgeon '; ...
'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
'RN Tagore Cardiology Research Center')
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
doc_profile =
Zara Ali
Sr. Surgeon
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali
Sr. Surgeon
RN Tagore Cardiology Research Center
Vous pouvez combiner des chaînes horizontalement de l'une des manières suivantes:
À l'aide de l'opérateur de concaténation MATLAB, []et séparer les chaînes d'entrée par une virgule ou un espace. Cette méthode préserve tous les espaces de fin dans les tableaux d'entrée.
En utilisant la fonction de concaténation de chaînes, strcat. Cette méthode supprime les espaces de fin dans les entrées.
Exemple
Créez un fichier de script et tapez le code suivant dedans -
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
profile = Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
Combinaison de chaînes dans un tableau de cellules
D'après notre discussion précédente, il est clair que combiner des chaînes de différentes longueurs pourrait être pénible car toutes les chaînes du tableau doivent être de la même longueur. Nous avons utilisé des espaces vides à la fin des chaînes pour égaliser leur longueur.
Cependant, un moyen plus efficace de combiner les chaînes consiste à convertir le tableau résultant en un tableau de cellules.
Le tableau de cellules MATLAB peut contenir différentes tailles et types de données dans un tableau. Les tableaux de cellules offrent un moyen plus flexible de stocker des chaînes de longueur variable.
le cellstr La fonction convertit un tableau de caractères en un tableau de cellules de chaînes.
Exemple
Créez un fichier de script et tapez le code suivant dedans -
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
{
[1,1] = Zara Ali
[2,1] = Sr. Surgeon
[3,1] = R N Tagore Cardiology Research Center
}
Fonctions de chaîne dans MATLAB
MATLAB fournit de nombreuses fonctions de chaîne créant, combinant, analysant, comparant et manipulant des chaînes.
Le tableau suivant fournit une brève description des fonctions de chaîne dans MATLAB -
Fonction | Objectif |
---|---|
Fonctions pour stocker du texte dans des tableaux de caractères, combiner des tableaux de caractères, etc. | |
blancs | Créer une chaîne de caractères vides |
cellstr | Créer un tableau de cellules de chaînes à partir d'un tableau de caractères |
carboniser | Convertir en tableau de caractères (chaîne) |
iscellstr | Déterminer si l'entrée est un tableau de cellules de chaînes |
ischar | Déterminer si l'élément est un tableau de caractères |
sprintf | Formater les données en chaîne |
strcat | Concaténer les chaînes horizontalement |
strjoin | Joindre les chaînes du tableau de cellules en une seule chaîne |
Fonctions pour identifier des parties de chaînes, rechercher et remplacer des sous-chaînes | |
ischar | Déterminer si l'élément est un tableau de caractères |
isletter | Éléments de tableau qui sont des lettres alphabétiques |
espace | Éléments de tableau qui sont des caractères d'espace |
isstrprop | Déterminer si la chaîne appartient à la catégorie spécifiée |
sscanf | Lire les données formatées à partir de la chaîne |
strfind | Trouver une chaîne dans une autre |
strrep | Rechercher et remplacer la sous-chaîne |
strsplit | Fractionner la chaîne au délimiteur spécifié |
strtok | Parties sélectionnées de la chaîne |
validatestring | Vérifier la validité de la chaîne de texte |
symvar | Déterminer les variables symboliques dans l'expression |
expression régulière | Faire correspondre l'expression régulière (sensible à la casse) |
regexpi | Correspondre à une expression régulière (insensible à la casse) |
regexprep | Remplacer la chaîne à l'aide d'une expression régulière |
regexptranslate | Traduire la chaîne en expression régulière |
Fonctions de comparaison de chaînes | |
strcmp | Comparer les chaînes (sensible à la casse) |
strcmpi | Comparer des chaînes (insensible à la casse) |
strncmp | Comparer les n premiers caractères des chaînes (sensible à la casse) |
strncmpi | Comparer les n premiers caractères des chaînes (insensible à la casse) |
Fonctions pour changer la chaîne en majuscules ou minuscules, créer ou supprimer des espaces blancs | |
déblank | Supprimez les blancs de fin de chaîne |
strtrim | Supprimer les espaces blancs de début et de fin de la chaîne |
inférieur | Convertir la chaîne en minuscules |
plus haut | Convertir la chaîne en majuscules |
strjust | Justifier le tableau de caractères |
Exemples
Les exemples suivants illustrent certaines des fonctions de chaîne mentionnées ci-dessus -
Formatage des chaînes
Créez un fichier de script et tapez le code suivant dedans -
A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
ans = 3141.592654
3141.59
+3141.59
3141.59
000003141.59
Joindre des chaînes
Créez un fichier de script et tapez le code suivant dedans -
%cell array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};
% Join strings in cell array into single string
str1 = strjoin(str_array, "-")
str2 = strjoin(str_array, ",")
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange
Recherche et remplacement de chaînes
Créez un fichier de script et tapez le code suivant dedans -
students = {'Zara Ali', 'Neha Bhatnagar', ...
'Monica Malik', 'Madhu Gautam', ...
'Madhu Sharma', 'Bhawna Sharma',...
'Nuha Ali', 'Reva Dutta', ...
'Sunaina Ali', 'Sofia Kabir'};
% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')
% Display first names
first_names = strtok(students)
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
new_student =
{
[1,1] = Poulomi Dutta
}
first_names =
{
[1,1] = Zara
[1,2] = Neha
[1,3] = Monica
[1,4] = Madhu
[1,5] = Madhu
[1,6] = Bhawna
[1,7] = Nuha
[1,8] = Reva
[1,9] = Sunaina
[1,10] = Sofia
}
Comparaison de chaînes
Créez un fichier de script et tapez le code suivant dedans -
str1 = 'This is test'
str2 = 'This is text'
if (strcmp(str1, str2))
sprintf('%s and %s are equal', str1, str2)
else
sprintf('%s and %s are not equal', str1, str2)
end
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal
Une fonction est un groupe d'instructions qui exécutent ensemble une tâche. Dans MATLAB, les fonctions sont définies dans des fichiers séparés. Le nom du fichier et de la fonction doit être le même.
Les fonctions opèrent sur des variables dans leur propre espace de travail, également appelé local workspace, distinct de l'espace de travail auquel vous accédez à l'invite de commande MATLAB qui s'appelle le base workspace.
Les fonctions peuvent accepter plus d'un argument d'entrée et peuvent renvoyer plusieurs arguments de sortie.
La syntaxe d'une instruction de fonction est -
function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)
Exemple
La fonction suivante nommée mymax doit être écrite dans un fichier nommé mymax.m . Il prend cinq nombres comme argument et renvoie le maximum des nombres.
Créez un fichier de fonction, nommé mymax.m et tapez le code suivant -
function max = mymax(n1, n2, n3, n4, n5)
%This function calculates the maximum of the
% five numbers given as input
max = n1;
if(n2 > max)
max = n2;
end
if(n3 > max)
max = n3;
end
if(n4 > max)
max = n4;
end
if(n5 > max)
max = n5;
end
La première ligne d'une fonction commence par le mot-clé function. Il donne le nom de la fonction et l'ordre des arguments. Dans notre exemple, la fonction mymax a cinq arguments d'entrée et un argument de sortie.
Les lignes de commentaire qui viennent juste après l'instruction de fonction fournissent le texte d'aide. Ces lignes sont imprimées lorsque vous tapez -
help mymax
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
This function calculates the maximum of the
five numbers given as input
Vous pouvez appeler la fonction comme -
mymax(34, 78, 89, 23, 11)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans = 89
Fonctions anonymes
Une fonction anonyme est comme une fonction en ligne dans les langages de programmation traditionnels, définie dans une seule instruction MATLAB. Il se compose d'une seule expression MATLAB et d'un nombre quelconque d'arguments d'entrée et de sortie.
Vous pouvez définir une fonction anonyme directement sur la ligne de commande MATLAB ou dans une fonction ou un script.
De cette façon, vous pouvez créer des fonctions simples sans avoir à créer un fichier pour elles.
La syntaxe de création d'une fonction anonyme à partir d'une expression est
f = @(arglist)expression
Exemple
Dans cet exemple, nous écrirons une fonction anonyme nommée power, qui prendra deux nombres en entrée et renverra le premier nombre élevé à la puissance du deuxième nombre.
Créez un fichier de script et tapez le code suivant -
power = @(x, n) x.^n;
result1 = power(7, 3)
result2 = power(49, 0.5)
result3 = power(10, -10)
result4 = power (4.5, 1.5)
Lorsque vous exécutez le fichier, il affiche -
result1 = 343
result2 = 7
result3 = 1.0000e-10
result4 = 9.5459
Fonctions principales et sous-fonctions
Toute fonction autre qu'une fonction anonyme doit être définie dans un fichier. Chaque fichier de fonction contient une fonction principale requise qui apparaît en premier et un nombre quelconque de sous-fonctions facultatives qui viennent après la fonction principale et sont utilisées par elle.
Les fonctions primaires peuvent être appelées depuis l'extérieur du fichier qui les définit, soit depuis la ligne de commande, soit depuis d'autres fonctions, mais les sous-fonctions ne peuvent pas être appelées depuis la ligne de commande ou d'autres fonctions, en dehors du fichier de fonction.
Les sous-fonctions ne sont visibles que pour la fonction principale et les autres sous-fonctions du fichier de fonction qui les définit.
Exemple
Écrivons une fonction nommée quadratique qui calculerait les racines d'une équation quadratique. La fonction prendrait trois entrées, le coefficient quadratique, le coefficient linéaire et le terme constant. Cela rendrait les racines.
Le fichier de fonction quadratic.m contiendra la fonction primaire quadratique et le disque de sous-fonction , qui calcule le discriminant.
Créez un fichier de fonction quadratic.m et tapez le code suivant -
function [x1,x2] = quadratic(a,b,c)
%this function returns the roots of
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficients of x2, x and the
%constant term
% It returns the roots
d = disc(a,b,c);
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end % end of quadratic
function dis = disc(a,b,c)
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end % end of sub-function
Vous pouvez appeler la fonction ci-dessus à partir de l'invite de commande comme -
quadratic(2,4,-4)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans = 0.7321
Fonctions imbriquées
Vous pouvez définir des fonctions dans le corps d'une autre fonction. Celles-ci sont appelées fonctions imbriquées. Une fonction imbriquée contient tout ou partie des composants de toute autre fonction.
Les fonctions imbriquées sont définies dans le cadre d'une autre fonction et partagent l'accès à l'espace de travail de la fonction conteneur.
Une fonction imbriquée suit la syntaxe suivante -
function x = A(p1, p2)
...
B(p2)
function y = B(p3)
...
end
...
end
Exemple
Réécrivons la fonction quadratique , de l'exemple précédent, cependant, cette fois, la fonction disque sera une fonction imbriquée.
Créez un fichier de fonction quadratic2.m et tapez le code suivant -
function [x1,x2] = quadratic2(a,b,c)
function disc % nested function
d = sqrt(b^2 - 4*a*c);
end % end of function disc
disc;
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end % end of function quadratic2
Vous pouvez appeler la fonction ci-dessus à partir de l'invite de commande comme -
quadratic2(2,4,-4)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans = 0.73205
Fonctions privées
Une fonction privée est une fonction principale qui n'est visible que par un groupe limité d'autres fonctions. Si vous ne souhaitez pas exposer l'implémentation d'une ou plusieurs fonctions, vous pouvez les créer en tant que fonctions privées.
Les fonctions privées résident dans subfolders avec le nom spécial private.
Ils ne sont visibles que pour les fonctions du dossier parent.
Exemple
Réécrivons la fonction quadratique . Cette fois, cependant, la fonction disque calculant le discriminant sera une fonction privée.
Créez un sous-dossier nommé privé dans le répertoire de travail. Stockez le fichier de fonction suivant disc.m dedans -
function dis = disc(a,b,c)
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end % end of sub-function
Créez une fonction quadratic3.m dans votre répertoire de travail et tapez le code suivant -
function [x1,x2] = quadratic3(a,b,c)
%this function returns the roots of
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficient of x2, x and the
%constant term
% It returns the roots
d = disc(a,b,c);
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end % end of quadratic3
Vous pouvez appeler la fonction ci-dessus à partir de l'invite de commande comme -
quadratic3(2,4,-4)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans = 0.73205
Variables globales
Les variables globales peuvent être partagées par plus d'une fonction. Pour cela, vous devez déclarer la variable comme globale dans toutes les fonctions.
Si vous souhaitez accéder à cette variable depuis l'espace de travail de base, déclarez la variable sur la ligne de commande.
La déclaration globale doit se produire avant que la variable ne soit réellement utilisée dans une fonction. Il est recommandé d'utiliser des lettres majuscules pour les noms des variables globales afin de les distinguer des autres variables.
Exemple
Créons un fichier de fonction nommé average.m et tapez le code suivant -
function avg = average(nums)
global TOTAL
avg = sum(nums)/TOTAL;
end
Créez un fichier de script et tapez le code suivant -
global TOTAL;
TOTAL = 10;
n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42];
av = average(n)
Lorsque vous exécutez le fichier, il affichera le résultat suivant -
av = 35.500
Importer des données dans MATLAB signifie charger des données à partir d'un fichier externe. leimportdataLa fonction permet de charger divers fichiers de données de différents formats. Il a les cinq formes suivantes -
Sr.No. | Description de la fonction |
---|---|
1 | A = importdata(filename) Charge les données dans le tableau A à partir du fichier désigné par nom de fichier . |
2 | A = importdata('-pastespecial') Charge les données à partir du presse-papiers du système plutôt qu'à partir d'un fichier. |
3 | A = importdata(___, delimiterIn) Interprète delimiterIn comme le séparateur de colonne dans le fichier ASCII, le nom de fichier ou les données du presse-papiers. Vous pouvez utiliser delimiterIn avec l'un des arguments d'entrée dans les syntaxes ci-dessus. |
4 | A = importdata(___, delimiterIn, headerlinesIn) Charge les données du fichier ASCII, du nom de fichier ou du presse-papiers, en lisant les données numériques à partir des en- têtes de ligneIn + 1 . |
5 | [A, delimiterOut, headerlinesOut] = importdata(___) Renvoie le caractère de délimitation détecté pour le fichier ASCII d'entrée dans delimiterOut et le nombre détecté de lignes d'en-tête dans headerlinesOut , en utilisant l'un des arguments d'entrée dans les syntaxes précédentes. |
Par défaut, Octave ne prend pas en charge la fonction importdata () , vous devrez donc rechercher et installer ce paquet pour que les exemples suivants fonctionnent avec votre installation Octave.
Exemple 1
Laissez-nous charger et afficher un fichier image. Créez un fichier de script et tapez le code suivant -
filename = 'smile.jpg';
A = importdata(filename);
image(A);
Lorsque vous exécutez le fichier, MATLAB affiche le fichier image. Cependant, vous devez le stocker dans le répertoire courant.
Exemple 2
Dans cet exemple, nous importons un fichier texte et spécifions le délimiteur et l'en-tête de colonne. Créons un fichier ASCII délimité par des espaces avec des en-têtes de colonne, nommé hebdomadairedata.txt .
Notre fichier texte hebdomadaire.txt ressemble à ceci -
SunDay MonDay TuesDay WednesDay ThursDay FriDay SaturDay
95.01 76.21 61.54 40.57 55.79 70.28 81.53
73.11 45.65 79.19 93.55 75.29 69.87 74.68
60.68 41.85 92.18 91.69 81.32 90.38 74.51
48.60 82.14 73.82 41.03 0.99 67.22 93.18
89.13 44.47 57.63 89.36 13.89 19.88 46.60
Créez un fichier de script et tapez le code suivant -
filename = 'weeklydata.txt';
delimiterIn = ' ';
headerlinesIn = 1;
A = importdata(filename,delimiterIn,headerlinesIn);
% View data
for k = [1:7]
disp(A.colheaders{1, k})
disp(A.data(:, k))
disp(' ')
end
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
SunDay
95.0100
73.1100
60.6800
48.6000
89.1300
MonDay
76.2100
45.6500
41.8500
82.1400
44.4700
TuesDay
61.5400
79.1900
92.1800
73.8200
57.6300
WednesDay
40.5700
93.5500
91.6900
41.0300
89.3600
ThursDay
55.7900
75.2900
81.3200
0.9900
13.8900
FriDay
70.2800
69.8700
90.3800
67.2200
19.8800
SaturDay
81.5300
74.6800
74.5100
93.1800
46.6000
Exemple 3
Dans cet exemple, importons des données à partir du presse-papiers.
Copiez les lignes suivantes dans le presse-papiers -
Mathematics is simple
Créez un fichier de script et tapez le code suivant -
A = importdata('-pastespecial')
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
A =
'Mathematics is simple'
E / S de fichier de bas niveau
La fonction importdata est une fonction de haut niveau. Les fonctions d'E / S de fichier de bas niveau de MATLAB permettent le plus de contrôle sur la lecture ou l'écriture de données dans un fichier. Cependant, ces fonctions nécessitent des informations plus détaillées sur votre fichier pour fonctionner efficacement.
MATLAB fournit les fonctions suivantes pour les opérations de lecture et d'écriture au niveau de l'octet ou du caractère -
Fonction | La description |
---|---|
fclose | Fermer un ou tous les fichiers ouverts |
feof | Test de fin de fichier |
ferror | Informations sur les erreurs d'E / S de fichier |
fgetl | Lire la ligne du fichier, supprimer les caractères de nouvelle ligne |
fgets | Lire la ligne du fichier, en conservant les caractères de nouvelle ligne |
ouvrir | Ouvrir un fichier ou obtenir des informations sur les fichiers ouverts |
fprintf | Écrire des données dans un fichier texte |
fread | Lire les données du fichier binaire |
frewind | Déplacer l'indicateur de position du fichier au début du fichier ouvert |
fscanf | Lire les données d'un fichier texte |
fseek | Déplacer vers la position spécifiée dans le fichier |
ftell | Position dans un fichier ouvert |
écrire | Ecrire des données dans un fichier binaire |
Importer des fichiers de données texte avec des E / S de bas niveau
MATLAB fournit les fonctions suivantes pour l'importation de bas niveau de fichiers de données texte -
le fscanf La fonction lit les données formatées dans un fichier texte ou ASCII.
le fgetl et fgets Les fonctions lisent une ligne d'un fichier à la fois, où un caractère de nouvelle ligne sépare chaque ligne.
le fread La fonction lit un flux de données au niveau de l'octet ou du bit.
Exemple
Nous avons un fichier de données texte «myfile.txt» enregistré dans notre répertoire de travail. Le fichier stocke les données pluviométriques pendant trois mois; Juin, juillet et août pour l'année 2012.
Les données de myfile.txt contiennent des ensembles répétés de mesures d'heure, de mois et de précipitations à cinq endroits. Les données d'en-tête stockent le nombre de mois M; nous avons donc M ensembles de mesures.
Le fichier ressemble à ceci -
Rainfall Data
Months: June, July, August
M = 3
12:00:00
June-2012
17.21 28.52 39.78 16.55 23.67
19.15 0.35 17.57 NaN 12.01
17.92 28.49 17.40 17.06 11.09
9.59 9.33 NaN 0.31 0.23
10.46 13.17 NaN 14.89 19.33
20.97 19.50 17.65 14.45 14.00
18.23 10.34 17.95 16.46 19.34
09:10:02
July-2012
12.76 16.94 14.38 11.86 16.89
20.46 23.17 NaN 24.89 19.33
30.97 49.50 47.65 24.45 34.00
18.23 30.34 27.95 16.46 19.34
30.46 33.17 NaN 34.89 29.33
30.97 49.50 47.65 24.45 34.00
28.67 30.34 27.95 36.46 29.34
15:03:40
August-2012
17.09 16.55 19.59 17.25 19.22
17.54 11.45 13.48 22.55 24.01
NaN 21.19 25.85 25.05 27.21
26.79 24.98 12.23 16.99 18.67
17.54 11.45 13.48 22.55 24.01
NaN 21.19 25.85 25.05 27.21
26.79 24.98 12.23 16.99 18.67
Nous importerons les données de ce fichier et afficherons ces données. Suivez les étapes suivantes -
Ouvrez le fichier avec fopen fonction et obtenez l'identificateur de fichier.
Décrivez les données du fichier avec format specifiers, tel que '%s'pour une chaîne,'%d'pour un entier, ou'%f'pour un nombre à virgule flottante.
Pour ignorer les caractères littéraux du fichier, incluez-les dans la description du format. Pour ignorer un champ de données, utilisez un astérisque ('*') dans le spécificateur.
Par exemple, pour lire les en-têtes et renvoyer la valeur unique de M, nous écrivons -
M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n', 1);
Par défaut, fscanflit les données selon notre description de format jusqu'à ce qu'il ne trouve aucune correspondance pour les données ou qu'il atteigne la fin du fichier. Ici, nous utiliserons la boucle for pour lire 3 ensembles de données et à chaque fois, elle lira 7 lignes et 5 colonnes.
Nous allons créer une structure nommée mydata dans l'espace de travail pour stocker les données lues à partir du fichier. Cette structure comporte trois champs: heure , mois et tableau de données de pluie .
Créez un fichier de script et tapez le code suivant -
filename = '/data/myfile.txt';
rows = 7;
cols = 5;
% open the file
fid = fopen(filename);
% read the file headers, find M (number of months)
M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n', 1);
% read each set of measurements
for n = 1:M
mydata(n).time = fscanf(fid, '%s', 1);
mydata(n).month = fscanf(fid, '%s', 1);
% fscanf fills the array in column order,
% so transpose the results
mydata(n).raindata = ...
fscanf(fid, '%f', [rows, cols]);
end
for n = 1:M
disp(mydata(n).time), disp(mydata(n).month)
disp(mydata(n).raindata)
end
% close the file
fclose(fid);
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
12:00:00
June-2012
17.2100 17.5700 11.0900 13.1700 14.4500
28.5200 NaN 9.5900 NaN 14.0000
39.7800 12.0100 9.3300 14.8900 18.2300
16.5500 17.9200 NaN 19.3300 10.3400
23.6700 28.4900 0.3100 20.9700 17.9500
19.1500 17.4000 0.2300 19.5000 16.4600
0.3500 17.0600 10.4600 17.6500 19.3400
09:10:02
July-2012
12.7600 NaN 34.0000 33.1700 24.4500
16.9400 24.8900 18.2300 NaN 34.0000
14.3800 19.3300 30.3400 34.8900 28.6700
11.8600 30.9700 27.9500 29.3300 30.3400
16.8900 49.5000 16.4600 30.9700 27.9500
20.4600 47.6500 19.3400 49.5000 36.4600
23.1700 24.4500 30.4600 47.6500 29.3400
15:03:40
August-2012
17.0900 13.4800 27.2100 11.4500 25.0500
16.5500 22.5500 26.7900 13.4800 27.2100
19.5900 24.0100 24.9800 22.5500 26.7900
17.2500 NaN 12.2300 24.0100 24.9800
19.2200 21.1900 16.9900 NaN 12.2300
17.5400 25.8500 18.6700 21.1900 16.9900
11.4500 25.0500 17.5400 25.8500 18.6700
L'exportation (ou sortie) de données dans MATLAB signifie écrire dans des fichiers. MATLAB vous permet d'utiliser vos données dans une autre application qui lit les fichiers ASCII. Pour cela, MATLAB propose plusieurs options d'exportation de données.
Vous pouvez créer le type de fichiers suivant -
Fichier de données ASCII rectangulaire et délimité à partir d'un tableau.
Fichier journal (ou journal) des frappes et du texte résultant.
Fichier ASCII spécialisé utilisant des fonctions de bas niveau telles que fprintf.
MEX-file pour accéder à votre routine C / C ++ ou Fortran qui écrit dans un format de fichier texte particulier.
En dehors de cela, vous pouvez également exporter des données vers des feuilles de calcul.
Il existe deux façons d'exporter un tableau numérique sous forme de fichier de données ASCII délimité -
En utilisant le save fonction et en spécifiant la -ascii qualificatif
En utilisant le dlmwrite fonction
La syntaxe pour utiliser la fonction de sauvegarde est -
save my_data.out num_array -ascii
où, my_data.out est le fichier de données ASCII délimité créé, num_array est un tableau numérique et−ascii est le spécificateur.
Syntaxe pour utiliser le dlmwrite la fonction est -
dlmwrite('my_data.out', num_array, 'dlm_char')
où, my_data.out est le fichier de données ASCII délimité créé, num_array est un tableau numérique et dlm_char est le caractère de délimitation.
Exemple
L'exemple suivant illustre le concept. Créez un fichier de script et tapez le code suivant -
num_array = [ 1 2 3 4 ; 4 5 6 7; 7 8 9 0];
save array_data1.out num_array -ascii;
type array_data1.out
dlmwrite('array_data2.out', num_array, ' ');
type array_data2.out
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
1.0000000e+00 2.0000000e+00 3.0000000e+00 4.0000000e+00
4.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00
7.0000000e+00 8.0000000e+00 9.0000000e+00 0.0000000e+00
1 2 3 4
4 5 6 7
7 8 9 0
Veuillez noter que la commande save -ascii et la fonction dlmwrite ne fonctionnent pas avec les tableaux de cellules en entrée. Pour créer un fichier ASCII délimité à partir du contenu d'un tableau de cellules, vous pouvez
Soit, convertissez le tableau de cellules en matrice à l'aide du cell2mat fonction
Ou exportez le tableau de cellules à l'aide des fonctions d'E / S de fichier de bas niveau.
Si vous utilisez le save pour écrire un tableau de caractères dans un fichier ASCII, il écrit l'équivalent ASCII des caractères dans le fichier.
Par exemple, écrivons le mot «bonjour» dans un fichier -
h = 'hello';
save textdata.out h -ascii
type textdata.out
MATLAB exécute les instructions ci-dessus et affiche le résultat suivant. qui sont les caractères de la chaîne «bonjour» au format ASCII à 8 chiffres.
1.0400000e+02 1.0100000e+02 1.0800000e+02 1.0800000e+02 1.1100000e+02
Écriture dans des fichiers de journal
Les fichiers journaux sont des journaux d'activité de votre session MATLAB. La fonction de journal crée une copie exacte de votre session dans un fichier disque, à l'exclusion des graphiques.
Pour activer la fonction agenda, tapez -
diary
En option, vous pouvez donner le nom du fichier journal, par exemple -
diary logdata.out
Pour désactiver la fonction agenda -
diary off
Vous pouvez ouvrir le fichier journal dans un éditeur de texte.
Exportation de données vers des fichiers de données texte avec des E / S de bas niveau
Jusqu'à présent, nous avons exporté des tableaux numériques. Cependant, vous devrez peut-être créer d'autres fichiers texte, y compris des combinaisons de données numériques et de caractères, des fichiers de sortie non rectangulaires ou des fichiers avec des schémas de codage non ASCII. À ces fins, MATLAB fournit le bas niveaufprintf fonction.
Comme dans les activités de fichiers d'E / S de bas niveau, avant d'exporter, vous devez ouvrir ou créer un fichier avec le fopenfonction et obtenez l'identificateur de fichier. Par défaut, fopen ouvre un fichier pour un accès en lecture seule. Vous devez spécifier l'autorisation d'écrire ou d'ajouter, comme «w» ou «a».
Après avoir traité le fichier, vous devez le fermer avec fclose(fid) fonction.
L'exemple suivant illustre le concept -
Exemple
Créez un fichier de script et tapez le code suivant -
% create a matrix y, with two rows
x = 0:10:100;
y = [x; log(x)];
% open a file for writing
fid = fopen('logtable.txt', 'w');
% Table Header
fprintf(fid, 'Log Function\n\n');
% print values in column order
% two values appear on each row of the file
fprintf(fid, '%f %f\n', y);
fclose(fid);
% display the file created
type logtable.txt
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
Log Function
0.000000 -Inf
10.000000 2.302585
20.000000 2.995732
30.000000 3.401197
40.000000 3.688879
50.000000 3.912023
60.000000 4.094345
70.000000 4.248495
80.000000 4.382027
90.000000 4.499810
100.000000 4.605170
Pour tracer le graphique d'une fonction, vous devez suivre les étapes suivantes -
Définir x, en spécifiant le range of values pour la variable x, pour lequel la fonction doit être tracée
Définissez la fonction, y = f(x)
Appeler le plot commande, comme plot(x, y)
L'exemple suivant démontrerait le concept. Tracons la fonction simpley = x pour la plage de valeurs de x de 0 à 100, avec un incrément de 5.
Créez un fichier de script et tapez le code suivant -
x = [0:5:100];
y = x;
plot(x, y)
Lorsque vous exécutez le fichier, MATLAB affiche le tracé suivant -
Prenons un autre exemple pour tracer la fonction y = x 2 . Dans cet exemple, nous allons dessiner deux graphiques avec la même fonction, mais dans un second temps, nous réduirons la valeur d'incrément. Veuillez noter qu'à mesure que nous diminuons l'incrément, le graphique devient plus fluide.
Créez un fichier de script et tapez le code suivant -
x = [1 2 3 4 5 6 7 8 9 10];
x = [-100:20:100];
y = x.^2;
plot(x, y)
Lorsque vous exécutez le fichier, MATLAB affiche le tracé suivant -
Modifiez un peu le fichier de code, réduisez l'incrément à 5 -
x = [-100:5:100];
y = x.^2;
plot(x, y)
MATLAB trace un graphique plus fluide -
Ajout de titre, d'étiquettes, de lignes de quadrillage et de mise à l'échelle sur le graphique
MATLAB vous permet d'ajouter un titre, des étiquettes le long de l'axe des x et de l'axe des y, des lignes de quadrillage et également d'ajuster les axes pour embellir le graphique.
le xlabel et ylabel Les commandes génèrent des étiquettes le long des axes x et y.
le title La commande vous permet de mettre un titre sur le graphique.
le grid on La commande vous permet de placer les lignes de la grille sur le graphique.
le axis equal La commande permet de générer le tracé avec les mêmes facteurs d'échelle et les espaces sur les deux axes.
le axis square La commande génère un tracé carré.
Exemple
Créez un fichier de script et tapez le code suivant -
x = [0:0.01:10];
y = sin(x);
plot(x, y), xlabel('x'), ylabel('Sin(x)'), title('Sin(x) Graph'),
grid on, axis equal
MATLAB génère le graphique suivant -
Dessiner plusieurs fonctions sur le même graphique
Vous pouvez dessiner plusieurs graphiques sur le même tracé. L'exemple suivant illustre le concept -
Exemple
Créez un fichier de script et tapez le code suivant -
x = [0 : 0.01: 10];
y = sin(x);
g = cos(x);
plot(x, y, x, g, '.-'), legend('Sin(x)', 'Cos(x)')
MATLAB génère le graphique suivant -
Définition des couleurs sur le graphique
MATLAB propose huit options de couleur de base pour dessiner des graphiques. Le tableau suivant montre les couleurs et leurs codes -
Code | Couleur |
---|---|
w | blanc |
k | Noir |
b | Bleu |
r | rouge |
c | Cyan |
g | vert |
m | Magenta |
y | Jaune |
Exemple
Trouvons le graphe de deux polynômes
f (x) = 3x 4 + 2x 3 + 7x 2 + 2x + 9 et
g (x) = 5x 3 + 9x + 2
Créez un fichier de script et tapez le code suivant -
x = [-10 : 0.01: 10];
y = 3*x.^4 + 2 * x.^3 + 7 * x.^2 + 2 * x + 9;
g = 5 * x.^3 + 9 * x + 2;
plot(x, y, 'r', x, g, 'g')
Lorsque vous exécutez le fichier, MATLAB génère le graphique suivant -
Définition des échelles des axes
le axisLa commande vous permet de définir les échelles des axes. Vous pouvez fournir des valeurs minimales et maximales pour les axes x et y à l'aide de la commande axis de la manière suivante:
axis ( [xmin xmax ymin ymax] )
L'exemple suivant montre ceci -
Exemple
Créez un fichier de script et tapez le code suivant -
x = [0 : 0.01: 10];
y = exp(-x).* sin(2*x + 3);
plot(x, y), axis([0 10 -1 1])
Lorsque vous exécutez le fichier, MATLAB génère le graphique suivant -
Génération de sous-tracés
Lorsque vous créez un tableau de tracés dans la même figure, chacun de ces tracés est appelé un sous-tracé. lesubplot La commande est utilisée pour créer des sous-graphiques.
La syntaxe de la commande est -
subplot(m, n, p)
où, m et n sont le nombre de lignes et de colonnes du tableau de tracé et p spécifie où placer un tracé particulier.
Chaque tracé créé avec la commande subplot peut avoir ses propres caractéristiques. L'exemple suivant montre le concept -
Exemple
Générons deux graphiques -
y = e −1,5x sin (10x)
y = e −2x sin (10x)
Créez un fichier de script et tapez le code suivant -
x = [0:0.01:5];
y = exp(-1.5*x).*sin(10*x);
subplot(1,2,1)
plot(x,y), xlabel('x'),ylabel('exp(–1.5x)*sin(10x)'),axis([0 5 -1 1])
y = exp(-2*x).*sin(10*x);
subplot(1,2,2)
plot(x,y),xlabel('x'),ylabel('exp(–2x)*sin(10x)'),axis([0 5 -1 1])
Lorsque vous exécutez le fichier, MATLAB génère le graphique suivant -
Ce chapitre continuera à explorer les capacités de traçage et graphiques de MATLAB. Nous discuterons -
- Dessiner des graphiques à barres
- Dessiner des contours
- Tracés en trois dimensions
Dessin de graphiques à barres
le barLa commande dessine un histogramme à deux dimensions. Prenons un exemple pour démontrer l'idée.
Exemple
Ayons une classe imaginaire avec 10 élèves. Nous savons que les pourcentages de notes obtenues par ces étudiants sont 75, 58, 90, 87, 50, 85, 92, 75, 60 et 95. Nous allons dessiner le diagramme à barres pour ces données.
Créez un fichier de script et tapez le code suivant -
x = [1:10];
y = [75, 58, 90, 87, 50, 85, 92, 75, 60, 95];
bar(x,y), xlabel('Student'),ylabel('Score'),
title('First Sem:')
print -deps graph.eps
Lorsque vous exécutez le fichier, MATLAB affiche le graphique à barres suivant -
Dessiner des contours
Une ligne de contour d'une fonction de deux variables est une courbe le long de laquelle la fonction a une valeur constante. Les lignes de contour sont utilisées pour créer des cartes de contour en joignant des points d'égale élévation au-dessus d'un niveau donné, tel que le niveau moyen de la mer.
MATLAB fournit un contour fonction pour dessiner des cartes de contour.
Exemple
Générons une carte de contour qui montre les lignes de contour pour une fonction donnée g = f (x, y). Cette fonction a deux variables. Nous devrons donc générer deux variables indépendantes, c'est-à-dire deux ensembles de données x et y. Cela se fait en appelant lemeshgrid commander.
le meshgrid La commande est utilisée pour générer une matrice d'éléments qui donnent la plage sur x et y avec la spécification d'incrément dans chaque cas.
Tracons notre fonction g = f (x, y), où −5 ≤ x ≤ 5, −3 ≤ y ≤ 3. Prenons un incrément de 0,1 pour les deux valeurs. Les variables sont définies comme -
[x,y] = meshgrid(–5:0.1:5, –3:0.1:3);
Enfin, nous devons attribuer la fonction. Soit notre fonction: x 2 + y 2
Créez un fichier de script et tapez le code suivant -
[x,y] = meshgrid(-5:0.1:5,-3:0.1:3); %independent variables
g = x.^2 + y.^2; % our function
contour(x,y,g) % call the contour function
print -deps graph.eps
Lorsque vous exécutez le fichier, MATLAB affiche la carte de contour suivante -
Modifions un peu le code pour embellir la carte
[x,y] = meshgrid(-5:0.1:5,-3:0.1:3); %independent variables
g = x.^2 + y.^2; % our function
[C, h] = contour(x,y,g); % call the contour function
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2)
print -deps graph.eps
Lorsque vous exécutez le fichier, MATLAB affiche la carte de contour suivante -
Tracés tridimensionnels
Les tracés tridimensionnels affichent essentiellement une surface définie par une fonction en deux variables, g = f (x, y).
Comme précédemment, pour définir g, nous créons d'abord un ensemble de (x, y) points sur le domaine de la fonction en utilisant le meshgridcommander. Ensuite, nous attribuons la fonction elle-même. Enfin, nous utilisons lesurf commande pour créer un tracé de surface.
L'exemple suivant illustre le concept -
Exemple
Créons une carte de surface 3D pour la fonction g = xe - (x 2 + y 2 )
Créez un fichier de script et tapez le code suivant -
[x,y] = meshgrid(-2:.2:2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g)
print -deps graph.eps
Lorsque vous exécutez le fichier, MATLAB affiche la carte 3D suivante -
Vous pouvez également utiliser le meshcommande pour générer une surface tridimensionnelle. Cependant, lesurf La commande affiche à la fois les lignes de connexion et les faces de la surface en couleur, tandis que la commande mesh La commande crée une surface filaire avec des lignes colorées reliant les points de définition.
Jusqu'à présent, nous avons vu que tous les exemples fonctionnent dans MATLAB ainsi que dans son GNU, également appelé Octave. Mais pour résoudre les équations algébriques de base, MATLAB et Octave sont un peu différents, nous allons donc essayer de couvrir MATLAB et Octave dans des sections séparées.
Nous discuterons également de la factorisation et de la simplification des expressions algébriques.
Résolution d'équations algébriques de base dans MATLAB
le solveLa fonction est utilisée pour résoudre des équations algébriques. Dans sa forme la plus simple, la fonction de résolution prend l'équation entre guillemets comme argument.
Par exemple, résolvons pour x dans l'équation x-5 = 0
solve('x-5=0')
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
5
Vous pouvez également appeler la fonction de résolution comme -
y = solve('x-5 = 0')
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
y =
5
Vous pouvez même ne pas inclure le côté droit de l'équation -
solve('x-5')
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
5
Si l'équation implique plusieurs symboles, alors MATLAB suppose par défaut que vous résolvez pour x, cependant, la fonction de résolution a une autre forme -
solve(equation, variable)
où, vous pouvez également mentionner la variable.
Par exemple, résolvons l'équation v - u - 3t 2 = 0, pour v.Dans ce cas, nous devrions écrire -
solve('v-u-3*t^2=0', 'v')
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
3*t^2 + u
Résolution d'équations algébriques de base en octave
le roots La fonction est utilisée pour résoudre les équations algébriques dans Octave et vous pouvez écrire les exemples ci-dessus comme suit -
Par exemple, résolvons pour x dans l'équation x-5 = 0
roots([1, -5])
Octave exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans = 5
Vous pouvez également appeler la fonction de résolution comme -
y = roots([1, -5])
Octave exécutera l'instruction ci-dessus et retournera le résultat suivant -
y = 5
Résolution d'équations quadratiques dans MATLAB
le solvefonction peut également résoudre des équations d'ordre supérieur. Il est souvent utilisé pour résoudre des équations quadratiques. La fonction renvoie les racines de l'équation dans un tableau.
L'exemple suivant résout l'équation quadratique x 2 -7x +12 = 0. Créez un fichier de script et tapez le code suivant -
eq = 'x^2 -7*x + 12 = 0';
s = solve(eq);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
The first root is:
3
The second root is:
4
Résolution d'équations quadratiques en octave
L'exemple suivant résout l'équation quadratique x 2 -7x +12 = 0 en octave. Créez un fichier de script et tapez le code suivant -
s = roots([1, -7, 12]);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
The first root is:
4
The second root is:
3
Résolution d'équations d'ordre supérieur dans MATLAB
le solvefonction peut également résoudre des équations d'ordre supérieur. Par exemple, résolvons une équation cubique comme (x-3) 2 (x-7) = 0
solve('(x-3)^2*(x-7)=0')
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
3
3
7
Dans le cas d'équations d'ordre supérieur, les racines sont longues contenant de nombreux termes. Vous pouvez obtenir la valeur numérique de ces racines en les convertissant en double. L'exemple suivant résout l'équation du quatrième ordre x 4 - 7x 3 + 3x 2 - 5x + 9 = 0.
Créez un fichier de script et tapez le code suivant -
eq = 'x^4 - 7*x^3 + 3*x^2 - 5*x + 9 = 0';
s = solve(eq);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));
disp('The third root is: '), disp(s(3));
disp('The fourth root is: '), disp(s(4));
% converting the roots to double type
disp('Numeric value of first root'), disp(double(s(1)));
disp('Numeric value of second root'), disp(double(s(2)));
disp('Numeric value of third root'), disp(double(s(3)));
disp('Numeric value of fourth root'), disp(double(s(4)));
Lorsque vous exécutez le fichier, il renvoie le résultat suivant -
The first root is:
6.630396332390718431485053218985
The second root is:
1.0597804633025896291682772499885
The third root is:
- 0.34508839784665403032666523448675 - 1.0778362954630176596831109269793*i
The fourth root is:
- 0.34508839784665403032666523448675 + 1.0778362954630176596831109269793*i
Numeric value of first root
6.6304
Numeric value of second root
1.0598
Numeric value of third root
-0.3451 - 1.0778i
Numeric value of fourth root
-0.3451 + 1.0778i
Veuillez noter que les deux dernières racines sont des nombres complexes.
Résolution d'équations d'ordre supérieur en octave
L'exemple suivant résout l'équation du quatrième ordre x 4 - 7x 3 + 3x 2 - 5x + 9 = 0.
Créez un fichier de script et tapez le code suivant -
v = [1, -7, 3, -5, 9];
s = roots(v);
% converting the roots to double type
disp('Numeric value of first root'), disp(double(s(1)));
disp('Numeric value of second root'), disp(double(s(2)));
disp('Numeric value of third root'), disp(double(s(3)));
disp('Numeric value of fourth root'), disp(double(s(4)));
Lorsque vous exécutez le fichier, il renvoie le résultat suivant -
Numeric value of first root
6.6304
Numeric value of second root
-0.34509 + 1.07784i
Numeric value of third root
-0.34509 - 1.07784i
Numeric value of fourth root
1.0598
Résolution du système d'équations dans MATLAB
le solveLa fonction peut également être utilisée pour générer des solutions de systèmes d'équations impliquant plus d'une variable. Prenons un exemple simple pour démontrer cette utilisation.
Résolvons les équations -
5x + 9y = 5
3x - 6y = 4
Créez un fichier de script et tapez le code suivant -
s = solve('5*x + 9*y = 5','3*x - 6*y = 4');
s.x
s.y
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
ans =
22/19
ans =
-5/57
De la même manière, vous pouvez résoudre des systèmes linéaires plus grands. Considérez l'ensemble d'équations suivant -
x + 3y -2z = 5
3x + 5y + 6z = 7
2x + 4y + 3z = 8
Résolution du système d'équations en octave
Nous avons une approche un peu différente pour résoudre un système d'équations linéaires «n» en «n» inconnues. Prenons un exemple simple pour démontrer cette utilisation.
Résolvons les équations -
5x + 9y = 5
3x - 6y = 4
Un tel système d'équations linéaires peut être écrit comme l'équation matricielle unique Ax = b, où A est la matrice des coefficients, b est le vecteur colonne contenant le côté droit des équations linéaires et x est le vecteur colonne représentant la solution comme montré dans le programme ci-dessous -
Créez un fichier de script et tapez le code suivant -
A = [5, 9; 3, -6];
b = [5;4];
A \ b
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
ans =
1.157895
-0.087719
De la même manière, vous pouvez résoudre des systèmes linéaires plus grands comme indiqué ci-dessous -
x + 3y -2z = 5
3x + 5y + 6z = 7
2x + 4y + 3z = 8
Extension et collecte d'équations dans MATLAB
le expand et le collectLa fonction développe et recueille une équation respectivement. L'exemple suivant montre les concepts -
Lorsque vous travaillez avec de nombreuses fonctions symboliques, vous devez déclarer que vos variables sont symboliques.
Créez un fichier de script et tapez le code suivant -
syms x %symbolic variable x
syms y %symbolic variable x
% expanding equations
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(sin(2*x))
expand(cos(x+y))
% collecting equations
collect(x^3 *(x-7))
collect(x^4*(x-3)*(x-5))
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
ans =
x^2 + 4*x - 45
ans =
x^4 + x^3 - 43*x^2 + 23*x + 210
ans =
2*cos(x)*sin(x)
ans =
cos(x)*cos(y) - sin(x)*sin(y)
ans =
x^4 - 7*x^3
ans =
x^6 - 8*x^5 + 15*x^4
Extension et collecte d'équations dans Octave
Vous devez avoir symbolic package, qui fournit expand et le collectpour développer et collecter une équation, respectivement. L'exemple suivant montre les concepts -
Lorsque vous travaillez avec de nombreuses fonctions symboliques, vous devez déclarer que vos variables sont symboliques mais Octave a une approche différente pour définir les variables symboliques. Notez l'utilisation deSin et Cos, qui sont également définis dans un package symbolique.
Créez un fichier de script et tapez le code suivant -
% first of all load the package, make sure its installed.
pkg load symbolic
% make symbols module available
symbols
% define symbolic variables
x = sym ('x');
y = sym ('y');
z = sym ('z');
% expanding equations
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(Sin(2*x))
expand(Cos(x+y))
% collecting equations
collect(x^3 *(x-7), z)
collect(x^4*(x-3)*(x-5), z)
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
ans =
-45.0+x^2+(4.0)*x
ans =
210.0+x^4-(43.0)*x^2+x^3+(23.0)*x
ans =
sin((2.0)*x)
ans =
cos(y+x)
ans =
x^(3.0)*(-7.0+x)
ans =
(-3.0+x)*x^(4.0)*(-5.0+x)
Factorisation et simplification des expressions algébriques
le factor fonction factorise une expression et la simplifyLa fonction simplifie une expression. L'exemple suivant illustre le concept -
Exemple
Créez un fichier de script et tapez le code suivant -
syms x
syms y
factor(x^3 - y^3)
factor([x^2-y^2,x^3+y^3])
simplify((x^4-16)/(x^2-4))
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
ans =
(x - y)*(x^2 + x*y + y^2)
ans =
[ (x - y)*(x + y), (x + y)*(x^2 - x*y + y^2)]
ans =
x^2 + 4
MATLAB propose différentes méthodes pour résoudre des problèmes de calcul différentiel et intégral, résoudre des équations différentielles de tout degré et calculer des limites. Mieux encore, vous pouvez facilement tracer les graphiques de fonctions complexes et vérifier les maxima, minima et autres points de papeterie sur un graphique en résolvant la fonction d'origine, ainsi que sa dérivée.
Ce chapitre traitera des problèmes de calcul. Dans ce chapitre, nous aborderons les concepts de pré-calcul, c'est-à-dire le calcul des limites des fonctions et la vérification des propriétés des limites.
Dans le chapitre suivant Différentiel , nous allons calculer la dérivée d'une expression et trouver les maxima et minima locaux sur un graphe. Nous discuterons également de la résolution d'équations différentielles.
Enfin, dans le chapitre Intégration , nous aborderons le calcul intégral.
Calcul des limites
MATLAB fournit le limitfonction de calcul des limites. Dans sa forme la plus élémentaire, lelimit function prend l'expression comme argument et trouve la limite de l'expression lorsque la variable indépendante va à zéro.
Par exemple, calculons la limite d'une fonction f (x) = (x 3 + 5) / (x 4 + 7), car x tend vers zéro.
syms x
limit((x^3 + 5)/(x^4 + 7))
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
5/7
La fonction limite relève du domaine du calcul symbolique; vous devez utiliser lesymspour indiquer à MATLAB les variables symboliques que vous utilisez. Vous pouvez également calculer la limite d'une fonction, car la variable tend vers un nombre autre que zéro. Pour calculer lim x-> a (f (x)), nous utilisons la commande limit avec des arguments. Le premier étant l'expression et le second le nombre, que x s'approche, ici c'est a .
Par exemple, calculons la limite d'une fonction f (x) = (x-3) / (x-1), car x tend vers 1.
limit((x - 3)/(x-1),1)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
NaN
Prenons un autre exemple,
limit(x^2 + 5, 3)
MATLAB exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
14
Calcul des limites à l'aide d'Octave
Voici la version Octave de l'exemple ci-dessus en utilisant symbolic package, essayez d'exécuter et de comparer le résultat -
pkg load symbolic
symbols
x = sym("x");
subs((x^3+5)/(x^4+7),x,0)
Octave exécutera l'instruction ci-dessus et retournera le résultat suivant -
ans =
0.7142857142857142857
Vérification des propriétés de base des limites
Le théorème des limites algébriques fournit certaines propriétés de base des limites. Ce sont les suivants -
Considérons deux fonctions -
- f (x) = (3x + 5) / (x - 3)
- g (x) = x 2 + 1.
Calculons les limites des fonctions lorsque x tend vers 5, des deux fonctions et vérifions les propriétés de base des limites en utilisant ces deux fonctions et MATLAB.
Exemple
Créez un fichier de script et tapez le code suivant dedans -
syms x
f = (3*x + 5)/(x-3);
g = x^2 + 1;
l1 = limit(f, 4)
l2 = limit (g, 4)
lAdd = limit(f + g, 4)
lSub = limit(f - g, 4)
lMult = limit(f*g, 4)
lDiv = limit (f/g, 4)
Lorsque vous exécutez le fichier, il affiche -
l1 =
17
l2 =
17
lAdd =
34
lSub =
0
lMult =
289
lDiv =
1
Vérification des propriétés de base des limites à l'aide d'Octave
Voici la version Octave de l'exemple ci-dessus en utilisant symbolic package, essayez d'exécuter et de comparer le résultat -
pkg load symbolic
symbols
x = sym("x");
f = (3*x + 5)/(x-3);
g = x^2 + 1;
l1 = subs(f, x, 4)
l2 = subs (g, x, 4)
lAdd = subs (f+g, x, 4)
lSub = subs (f-g, x, 4)
lMult = subs (f*g, x, 4)
lDiv = subs (f/g, x, 4)
Octave exécutera l'instruction ci-dessus et retournera le résultat suivant -
l1 =
17.0
l2 =
17.0
lAdd =
34.0
lSub =
0.0
lMult =
289.0
lDiv =
1.0
Limites des côtés gauche et droit
Lorsqu'une fonction présente une discontinuité pour une valeur particulière de la variable, la limite n'existe pas à ce stade. En d'autres termes, les limites d'une fonction f (x) ont une discontinuité en x = a, lorsque la valeur de limite, lorsque x s'approche de x du côté gauche, n'égale pas la valeur de la limite lorsque x s'approche du côté droit.
Cela conduit au concept de limites gaucher et droitier. Une limite à gauche est définie comme la limite comme x -> a, à partir de la gauche, c'est-à-dire que x s'approche de a, pour les valeurs de x <a. Une limite à droite est définie comme la limite lorsque x -> a, à partir de la droite, c'est-à-dire que x s'approche de a, pour les valeurs de x> a. Lorsque la limite gauche et la limite droitier ne sont pas égales, la limite n'existe pas.
Considérons une fonction -
f(x) = (x - 3)/|x - 3|
Nous montrerons que lim x-> 3 f (x) n'existe pas. MATLAB nous aide à établir ce fait de deux manières -
- En traçant le graphique de la fonction et en montrant la discontinuité.
- En calculant les limites et en montrant que les deux sont différents.
Les limites gaucher et droitier sont calculées en passant les chaînes de caractères «gauche» et «droite» à la commande limit comme dernier argument.
Exemple
Créez un fichier de script et tapez le code suivant dedans -
f = (x - 3)/abs(x-3);
ezplot(f,[-1,5])
l = limit(f,x,3,'left')
r = limit(f,x,3,'right')
Lorsque vous exécutez le fichier, MATLAB dessine le tracé suivant
Après l'affichage de la sortie suivante -
l =
-1
r =
1
MATLAB fournit le diffcommande pour le calcul des dérivés symboliques. Dans sa forme la plus simple, vous passez la fonction que vous souhaitez différencier à la commande diff comme argument.
Par exemple, calculons la dérivée de la fonction f (t) = 3t 2 + 2t -2
Exemple
Créez un fichier de script et tapez le code suivant dedans -
syms t
f = 3*t^2 + 2*t^(-2);
diff(f)
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
ans =
6*t - 4/t^3
Voici l'équivalent d'octave du calcul ci-dessus -
pkg load symbolic
symbols
t = sym("t");
f = 3*t^2 + 2*t^(-2);
differentiate(f,t)
Octave exécute le code et renvoie le résultat suivant -
ans =
-(4.0)*t^(-3.0)+(6.0)*t
Vérification des règles élémentaires de différenciation
Décrivons brièvement diverses équations ou règles de différenciation des fonctions et vérifions ces règles. Pour cela, nous écrirons f '(x) pour une dérivée du premier ordre et f "(x) pour une dérivée du second ordre.
Voici les règles de différenciation -
Règle 1
Pour toutes les fonctions f et g et tous les nombres réels a et b sont la dérivée de la fonction -
h(x) = af(x) + bg(x) par rapport à x est donné par -
h'(x) = af'(x) + bg'(x)
Règle 2
le sum et subtraction les règles stipulent que si f et g sont deux fonctions, f 'et g' sont leurs dérivées respectivement, alors,
(f + g)' = f' + g'
(f - g)' = f' - g'
Règle 3
le product règle stipule que si f et g sont deux fonctions, f 'et g' sont leurs dérivés respectivement, alors,
(f.g)' = f'.g + g'.f
Règle 4
le quotient règle stipule que si f et g sont deux fonctions, f 'et g' sont leurs dérivés respectivement, alors,
(f/g)' = (f'.g - g'.f)/g2
Règle 5
le polynomial ou règle de puissance élémentaire stipule que, si y = f(x) = xn, puis f' = n. x(n-1)
Un résultat direct de cette règle est que la dérivée de toute constante est nulle, c'est-à-dire si y = k, toute constante, alors
f' = 0
Règle 6
le chain règle stipule que, dérivée de la fonction d'une fonction h(x) = f(g(x)) par rapport à x est,
h'(x)= f'(g(x)).g'(x)
Exemple
Créez un fichier de script et tapez le code suivant dedans -
syms x
syms t
f = (x + 2)*(x^2 + 3)
der1 = diff(f)
f = (t^2 + 3)*(sqrt(t) + t^3)
der2 = diff(f)
f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)
der3 = diff(f)
f = (2*x^2 + 3*x)/(x^3 + 1)
der4 = diff(f)
f = (x^2 + 1)^17
der5 = diff(f)
f = (t^3 + 3* t^2 + 5*t -9)^(-6)
der6 = diff(f)
Lorsque vous exécutez le fichier, MATLAB affiche le résultat suivant -
f =
(x^2 + 3)*(x + 2)
der1 =
2*x*(x + 2) + x^2 + 3
f =
(t^(1/2) + t^3)*(t^2 + 3)
der2 =
(t^2 + 3)*(3*t^2 + 1/(2*t^(1/2))) + 2*t*(t^(1/2) + t^3)
f =
(x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)
der3 =
(2*x - 2)*(3*x^3 - 5*x^2 + 2) - (- 9*x^2 + 10*x)*(x^2 - 2*x + 1)
f =
(2*x^2 + 3*x)/(x^3 + 1)
der4 =
(4*x + 3)/(x^3 + 1) - (3*x^2*(2*x^2 + 3*x))/(x^3 + 1)^2
f =
(x^2 + 1)^17
der5 =
34*x*(x^2 + 1)^16
f =
1/(t^3 + 3*t^2 + 5*t - 9)^6
der6 =
-(6*(3*t^2 + 6*t + 5))/(t^3 + 3*t^2 + 5*t - 9)^7
Voici l'équivalent d'octave du calcul ci-dessus -
pkg load symbolic
symbols
x = sym("x");
t = sym("t");
f = (x + 2)*(x^2 + 3)
der1 = differentiate(f,x)
f = (t^2 + 3)*(t^(1/2) + t^3)
der2 = differentiate(f,t)
f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)
der3 = differentiate(f,x)
f = (2*x^2 + 3*x)/(x^3 + 1)
der4 = differentiate(f,x)
f = (x^2 + 1)^17
der5 = differentiate(f,x)
f = (t^3 + 3* t^2 + 5*t -9)^(-6)
der6 = differentiate(f,t)
Octave exécute le code et renvoie le résultat suivant -
f =
(2.0+x)*(3.0+x^(2.0))
der1 =
3.0+x^(2.0)+(2.0)*(2.0+x)*x
f =
(t^(3.0)+sqrt(t))*(3.0+t^(2.0))
der2 =
(2.0)*(t^(3.0)+sqrt(t))*t+((3.0)*t^(2.0)+(0.5)*t^(-0.5))*(3.0+t^(2.0))
f =
(1.0+x^(2.0)-(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0))
der3 =
(-2.0+(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0))+((9.0)*x^(2.0)-(10.0)*x)*(1.0+x^(2.0)-(2.0)*x)
f =
(1.0+x^(3.0))^(-1)*((2.0)*x^(2.0)+(3.0)*x)
der4 =
(1.0+x^(3.0))^(-1)*(3.0+(4.0)*x)-(3.0)*(1.0+x^(3.0))^(-2)*x^(2.0)*((2.0)*x^(2.0)+(3.0)*x)
f =
(1.0+x^(2.0))^(17.0)
der5 =
(34.0)*(1.0+x^(2.0))^(16.0)*x
f =
(-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-6.0)
der6 =
-(6.0)*(-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-7.0)*(5.0+(3.0)*t^(2.0)+(6.0)*t)
Dérivés des fonctions exponentielles, logarithmiques et trigonométriques
Le tableau suivant fournit les dérivées des fonctions exponentielles, logarithmiques et trigonométriques couramment utilisées -
Fonction | Dérivé |
---|---|
ca.x | c a.x .ln ca (ln est le logarithme naturel) |
ex | e x |
ln x | 1 fois |
lncx | 1 / x.ln c |
xx | x x . (1 + ln x) |
sin(x) | cos (x) |
cos(x) | -sin (x) |
tan(x) | sec 2 (x), ou 1 / cos 2 (x), ou 1 + tan 2 (x) |
cot(x) | -csc 2 (x), ou -1 / sin 2 (x), ou - (1 + cot 2 (x)) |
sec(x) | sec (x) .tan (x) |
csc(x) | -csc (x) .cot (x) |
Exemple
Créez un fichier de script et tapez le code suivant dedans -
syms x
y = exp(x)
diff(y)
y = x^9
diff(y)
y = sin(x)
diff(y)
y = tan(x)
diff(y)
y = cos(x)
diff(y)
y = log(x)
diff(y)
y = log10(x)
diff(y)
y = sin(x)^2
diff(y)
y = cos(3*x^2 + 2*x + 1)
diff(y)
y = exp(x)/sin(x)
diff(y)
Lorsque vous exécutez le fichier, MATLAB affiche le résultat suivant -
y =
exp(x)
ans =
exp(x)
y =
x^9
ans =
9*x^8
y =
sin(x)
ans =
cos(x)
y =
tan(x)
ans =
tan(x)^2 + 1
y =
cos(x)
ans =
-sin(x)
y =
log(x)
ans =
1/x
y =
log(x)/log(10)
ans =
1/(x*log(10))
y =
sin(x)^2
ans =
2*cos(x)*sin(x)
y =
cos(3*x^2 + 2*x + 1)
ans =
-sin(3*x^2 + 2*x + 1)*(6*x + 2)
y =
exp(x)/sin(x)
ans =
exp(x)/sin(x) - (exp(x)*cos(x))/sin(x)^2
Voici l'équivalent d'octave du calcul ci-dessus -
pkg load symbolic
symbols
x = sym("x");
y = Exp(x)
differentiate(y,x)
y = x^9
differentiate(y,x)
y = Sin(x)
differentiate(y,x)
y = Tan(x)
differentiate(y,x)
y = Cos(x)
differentiate(y,x)
y = Log(x)
differentiate(y,x)
% symbolic packages does not have this support
%y = Log10(x)
%differentiate(y,x)
y = Sin(x)^2
differentiate(y,x)
y = Cos(3*x^2 + 2*x + 1)
differentiate(y,x)
y = Exp(x)/Sin(x)
differentiate(y,x)
Octave exécute le code et renvoie le résultat suivant -
y =
exp(x)
ans =
exp(x)
y =
x^(9.0)
ans =
(9.0)*x^(8.0)
y =
sin(x)
ans =
cos(x)
y =
tan(x)
ans =
1+tan(x)^2
y =
cos(x)
ans =
-sin(x)
y =
log(x)
ans =
x^(-1)
y =
sin(x)^(2.0)
ans =
(2.0)*sin(x)*cos(x)
y =
cos(1.0+(2.0)*x+(3.0)*x^(2.0))
ans =
-(2.0+(6.0)*x)*sin(1.0+(2.0)*x+(3.0)*x^(2.0))
y =
sin(x)^(-1)*exp(x)
ans =
sin(x)^(-1)*exp(x)-sin(x)^(-2)*cos(x)*exp(x)
Calcul des dérivés d'ordre supérieur
Pour calculer les dérivées supérieures d'une fonction f, nous utilisons la syntaxe diff(f,n).
Calculons la dérivée seconde de la fonction y = f (x) = x .e -3x
f = x*exp(-3*x);
diff(f, 2)
MATLAB exécute le code et renvoie le résultat suivant -
ans =
9*x*exp(-3*x) - 6*exp(-3*x)
Voici l'équivalent d'octave du calcul ci-dessus -
pkg load symbolic
symbols
x = sym("x");
f = x*Exp(-3*x);
differentiate(f, x, 2)
Octave exécute le code et renvoie le résultat suivant -
ans =
(9.0)*exp(-(3.0)*x)*x-(6.0)*exp(-(3.0)*x)
Exemple
Dans cet exemple, résolvons un problème. Étant donné qu'une fonctiony = f(x) = 3 sin(x) + 7 cos(5x). Nous devrons savoir si l'équationf" + f = -5cos(2x) qui est vrai.
Créez un fichier de script et tapez le code suivant dedans -
syms x
y = 3*sin(x)+7*cos(5*x); % defining the function
lhs = diff(y,2)+y; %evaluting the lhs of the equation
rhs = -5*cos(2*x); %rhs of the equation
if(isequal(lhs,rhs))
disp('Yes, the equation holds true');
else
disp('No, the equation does not hold true');
end
disp('Value of LHS is: '), disp(lhs);
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
No, the equation does not hold true
Value of LHS is:
-168*cos(5*x)
Voici l'équivalent d'octave du calcul ci-dessus -
pkg load symbolic
symbols
x = sym("x");
y = 3*Sin(x)+7*Cos(5*x); % defining the function
lhs = differentiate(y, x, 2) + y; %evaluting the lhs of the equation
rhs = -5*Cos(2*x); %rhs of the equation
if(lhs == rhs)
disp('Yes, the equation holds true');
else
disp('No, the equation does not hold true');
end
disp('Value of LHS is: '), disp(lhs);
Octave exécute le code et renvoie le résultat suivant -
No, the equation does not hold true
Value of LHS is:
-(168.0)*cos((5.0)*x)
Recherche des maxima et des minima d'une courbe
Si nous recherchons les maxima et minima locaux pour un graphique, nous recherchons essentiellement les points les plus hauts ou les plus bas sur le graphique de la fonction à une localité particulière, ou pour une plage particulière de valeurs de la variable symbolique.
Pour une fonction y = f (x) les points du graphe où le graphe a une pente nulle sont appelés stationary points. En d'autres termes, les points stationnaires sont où f '(x) = 0.
Pour trouver les points stationnaires d'une fonction que nous différencions, nous devons définir la dérivée égale à zéro et résoudre l'équation.
Exemple
Trouvons les points stationnaires de la fonction f (x) = 2x 3 + 3x 2 - 12x + 17
Suivez les étapes suivantes -
First let us enter the function and plot its graph.
syms x
y = 2*x^3 + 3*x^2 - 12*x + 17; % defining the function
ezplot(y)
MATLAB exécute le code et renvoie le tracé suivant -
Voici le code équivalent Octave pour l'exemple ci-dessus -
pkg load symbolic
symbols
x = sym('x');
y = inline("2*x^3 + 3*x^2 - 12*x + 17");
ezplot(y)
print -deps graph.eps
Our aim is to find some local maxima and minima on the graph, so let us find the local maxima and minima for the interval [-2, 2] on the graph.
syms x
y = 2*x^3 + 3*x^2 - 12*x + 17; % defining the function
ezplot(y, [-2, 2])
MATLAB exécute le code et renvoie le tracé suivant -
Voici le code équivalent Octave pour l'exemple ci-dessus -
pkg load symbolic
symbols
x = sym('x');
y = inline("2*x^3 + 3*x^2 - 12*x + 17");
ezplot(y, [-2, 2])
print -deps graph.eps
Next, let us compute the derivative.
g = diff(y)
MATLAB exécute le code et renvoie le résultat suivant -
g =
6*x^2 + 6*x - 12
Voici l'équivalent Octave du calcul ci-dessus -
pkg load symbolic
symbols
x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y,x)
Octave exécute le code et renvoie le résultat suivant -
g =
-12.0+(6.0)*x+(6.0)*x^(2.0)
Let us solve the derivative function, g, to get the values where it becomes zero.
s = solve(g)
MATLAB exécute le code et renvoie le résultat suivant -
s =
1
-2
Voici l'équivalent d'octave du calcul ci-dessus -
pkg load symbolic
symbols
x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y,x)
roots([6, 6, -12])
Octave exécute le code et renvoie le résultat suivant -
g =
-12.0+(6.0)*x^(2.0)+(6.0)*x
ans =
-2
1
This agrees with our plot. So let us evaluate the function f at the critical points x = 1, -2. On peut substituer une valeur dans une fonction symbolique en utilisant la subs commander.
subs(y, 1), subs(y, -2)
MATLAB exécute le code et renvoie le résultat suivant -
ans =
10
ans =
37
Voici l'équivalent d'octave du calcul ci-dessus -
pkg load symbolic
symbols
x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y,x)
roots([6, 6, -12])
subs(y, x, 1), subs(y, x, -2)
ans =
10.0
ans =
37.0-4.6734207789940138748E-18*I
Par conséquent, les valeurs minimale et maximale de la fonction f (x) = 2x 3 + 3x 2 - 12x + 17, dans l'intervalle [-2,2] sont 10 et 37.
Résolution d'équations différentielles
MATLAB fournit le dsolve commande pour résoudre symboliquement des équations différentielles.
La forme la plus élémentaire du dsolve commande pour trouver la solution à une seule équation est
dsolve('eqn')
où eqn est une chaîne de texte utilisée pour entrer l'équation.
Il renvoie une solution symbolique avec un ensemble de constantes arbitraires que MATLAB étiquette C1, C2, etc.
Vous pouvez également spécifier les conditions initiales et aux limites pour le problème, sous forme de liste délimitée par des virgules après l'équation comme -
dsolve('eqn','cond1', 'cond2',…)
Pour utiliser la commande dsolve, derivatives are indicated with a D. Par exemple, une équation comme f '(t) = -2 * f + coût (t) est entrée comme -
'Df = -2*f + cos(t)'
Les dérivés supérieurs sont indiqués en suivant D par l'ordre du dérivé.
Par exemple, l'équation f "(x) + 2f '(x) = 5sin3x doit être saisie sous la forme -
'D2y + 2Dy = 5*sin(3*x)'
Prenons un exemple simple d'équation différentielle du premier ordre: y '= 5y.
s = dsolve('Dy = 5*y')
MATLAB exécute le code et renvoie le résultat suivant -
s =
C2*exp(5*t)
Prenons un autre exemple d'une équation différentielle du second ordre comme: y "- y = 0, y (0) = -1, y '(0) = 2.
dsolve('D2y - y = 0','y(0) = -1','Dy(0) = 2')
MATLAB exécute le code et renvoie le résultat suivant -
ans =
exp(t)/2 - (3*exp(-t))/2
L'intégration traite de deux types de problèmes essentiellement différents.
Dans le premier type, la dérivée d'une fonction est donnée et nous voulons trouver la fonction. Par conséquent, nous inversons fondamentalement le processus de différenciation. Ce processus inverse est appelé anti-différenciation, ou trouver la fonction primitive, ou trouver unindefinite integral.
Le second type de problèmes consiste à additionner un très grand nombre de très petites quantités puis à prendre une limite lorsque la taille des quantités s'approche de zéro, tandis que le nombre de termes tend vers l'infini. Ce processus conduit à la définition dudefinite integral.
Des intégrales définies sont utilisées pour trouver la zone, le volume, le centre de gravité, le moment d'inertie, le travail effectué par une force et dans de nombreuses autres applications.
Recherche d'une intégrale indéfinie à l'aide de MATLAB
Par définition, si la dérivée d'une fonction f (x) est f '(x), alors on dit qu'une intégrale indéfinie de f' (x) par rapport à x est f (x). Par exemple, puisque la dérivée (par rapport à x) de x 2 est 2x, nous pouvons dire qu'une intégrale indéfinie de 2x est x 2 .
En symboles -
f'(x2) = 2x, par conséquent,
∫ 2xdx = x2.
L'intégrale indéfinie n'est pas unique, car la dérivée de x 2 + c, pour toute valeur d'une constante c, sera également 2x.
Ceci est exprimé en symboles comme -
∫ 2xdx = x2 + c.
Où, c est appelé une «constante arbitraire».
MATLAB fournit un intcommande pour calculer l'intégrale d'une expression. Pour dériver une expression pour l'intégrale indéfinie d'une fonction, nous écrivons -
int(f);
Par exemple, à partir de notre exemple précédent -
syms x
int(2*x)
MATLAB exécute l'instruction ci-dessus et renvoie le résultat suivant -
ans =
x^2
Exemple 1
Dans cet exemple, trouvons l'intégrale de certaines expressions couramment utilisées. Créez un fichier de script et tapez le code suivant -
syms x n
int(sym(x^n))
f = 'sin(n*t)'
int(sym(f))
syms a t
int(a*cos(pi*t))
int(a^x)
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
ans =
piecewise([n == -1, log(x)], [n ~= -1, x^(n + 1)/(n + 1)])
f =
sin(n*t)
ans =
-cos(n*t)/n
ans =
(a*sin(pi*t))/pi
ans =
a^x/log(a)
Exemple 2
Créez un fichier de script et tapez le code suivant -
syms x n
int(cos(x))
int(exp(x))
int(log(x))
int(x^-1)
int(x^5*cos(5*x))
pretty(int(x^5*cos(5*x)))
int(x^-5)
int(sec(x)^2)
pretty(int(1 - 10*x + 9 * x^2))
int((3 + 5*x -6*x^2 - 7*x^3)/2*x^2)
pretty(int((3 + 5*x -6*x^2 - 7*x^3)/2*x^2))
Notez que le pretty La fonction renvoie une expression dans un format plus lisible.
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
ans =
sin(x)
ans =
exp(x)
ans =
x*(log(x) - 1)
ans =
log(x)
ans =
(24*cos(5*x))/3125 + (24*x*sin(5*x))/625 - (12*x^2*cos(5*x))/125 + (x^4*cos(5*x))/5 - (4*x^3*sin(5*x))/25 + (x^5*sin(5*x))/5
2 4
24 cos(5 x) 24 x sin(5 x) 12 x cos(5 x) x cos(5 x)
----------- + ------------- - -------------- + ------------
3125 625 125 5
3 5
4 x sin(5 x) x sin(5 x)
------------- + -----------
25 5
ans =
-1/(4*x^4)
ans =
tan(x)
2
x (3 x - 5 x + 1)
ans =
- (7*x^6)/12 - (3*x^5)/5 + (5*x^4)/8 + x^3/2
6 5 4 3
7 x 3 x 5 x x
- ---- - ---- + ---- + --
12 5 8 2
Trouver une intégrale définie à l'aide de MATLAB
Par définition, l'intégrale définie est fondamentalement la limite d'une somme. Nous utilisons des intégrales définies pour trouver des zones telles que la zone entre une courbe et l'axe des x et la zone entre deux courbes. Des intégrales définies peuvent également être utilisées dans d'autres situations, où la quantité requise peut être exprimée comme la limite d'une somme.
le int La fonction peut être utilisée pour une intégration définie en passant les limites sur lesquelles vous souhaitez calculer l'intégrale.
Calculer
nous écrivons,
int(x, a, b)
Par exemple, pour calculer la valeur de
int(x, 4, 9)
MATLAB exécute l'instruction ci-dessus et renvoie le résultat suivant -
ans =
65/2
Voici l'équivalent d'octave du calcul ci-dessus -
pkg load symbolic
symbols
x = sym("x");
f = x;
c = [1, 0];
integral = polyint(c);
a = polyval(integral, 9) - polyval(integral, 4);
display('Area: '), disp(double(a));
Octave exécute le code et renvoie le résultat suivant -
Area:
32.500
Une solution alternative peut être donnée en utilisant la fonction quad () fournie par Octave comme suit -
pkg load symbolic
symbols
f = inline("x");
[a, ierror, nfneval] = quad(f, 4, 9);
display('Area: '), disp(double(a));
Octave exécute le code et renvoie le résultat suivant -
Area:
32.500
Exemple 1
Calculons l'aire comprise entre l'axe des x, et la courbe y = x 3 −2x + 5 et les ordonnées x = 1 et x = 2.
La surface requise est donnée par -
Créez un fichier de script et tapez le code suivant -
f = x^3 - 2*x +5;
a = int(f, 1, 2)
display('Area: '), disp(double(a));
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
a =
23/4
Area:
5.7500
Voici l'équivalent d'octave du calcul ci-dessus -
pkg load symbolic
symbols
x = sym("x");
f = x^3 - 2*x +5;
c = [1, 0, -2, 5];
integral = polyint(c);
a = polyval(integral, 2) - polyval(integral, 1);
display('Area: '), disp(double(a));
Octave exécute le code et renvoie le résultat suivant -
Area:
5.7500
Une solution alternative peut être donnée en utilisant la fonction quad () fournie par Octave comme suit -
pkg load symbolic
symbols
x = sym("x");
f = inline("x^3 - 2*x +5");
[a, ierror, nfneval] = quad(f, 1, 2);
display('Area: '), disp(double(a));
Octave exécute le code et renvoie le résultat suivant -
Area:
5.7500
Exemple 2
Trouvez l'aire sous la courbe: f (x) = x 2 cos (x) pour −4 ≤ x ≤ 9.
Créez un fichier de script et écrivez le code suivant -
f = x^2*cos(x);
ezplot(f, [-4,9])
a = int(f, -4, 9)
disp('Area: '), disp(double(a));
Lorsque vous exécutez le fichier, MATLAB trace le graphique -
La sortie est donnée ci-dessous -
a =
8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9)
Area:
0.3326
Voici l'équivalent d'octave du calcul ci-dessus -
pkg load symbolic
symbols
x = sym("x");
f = inline("x^2*cos(x)");
ezplot(f, [-4,9])
print -deps graph.eps
[a, ierror, nfneval] = quad(f, -4, 9);
display('Area: '), disp(double(a));
MATLAB représente les polynômes sous forme de vecteurs lignes contenant des coefficients classés par puissances décroissantes. Par exemple, l'équation P (x) = x 4 + 7x 3 - 5x + 9 pourrait être représentée par -
p = [1 7 0 -5 9];
Évaluation des polynômes
le polyvalLa fonction est utilisée pour évaluer un polynôme à une valeur spécifiée. Par exemple, pour évaluer notre polynôme précédentp, à x = 4, tapez -
p = [1 7 0 -5 9];
polyval(p,4)
MATLAB exécute les instructions ci-dessus et renvoie le résultat suivant -
ans = 693
MATLAB fournit également le polyvalmfonction d'évaluation d'un polynôme matriciel. Un polynôme matriciel est unpolynomial avec des matrices comme variables.
Par exemple, créons une matrice carrée X et évaluons le polynôme p, en X -
p = [1 7 0 -5 9];
X = [1 2 -3 4; 2 -5 6 3; 3 1 0 2; 5 -7 3 8];
polyvalm(p, X)
MATLAB exécute les instructions ci-dessus et renvoie le résultat suivant -
ans =
2307 -1769 -939 4499
2314 -2376 -249 4695
2256 -1892 -549 4310
4570 -4532 -1062 9269
Trouver les racines des polynômes
le rootsLa fonction calcule les racines d'un polynôme. Par exemple, pour calculer les racines de notre polynôme p, tapez -
p = [1 7 0 -5 9];
r = roots(p)
MATLAB exécute les instructions ci-dessus et renvoie le résultat suivant -
r =
-6.8661 + 0.0000i
-1.4247 + 0.0000i
0.6454 + 0.7095i
0.6454 - 0.7095i
La fonction polyest un inverse de la fonction racines et renvoie aux coefficients polynomiaux. Par exemple -
p2 = poly(r)
MATLAB exécute les instructions ci-dessus et renvoie le résultat suivant -
p2 =
Columns 1 through 3:
1.00000 + 0.00000i 7.00000 + 0.00000i 0.00000 + 0.00000i
Columns 4 and 5:
-5.00000 - 0.00000i 9.00000 + 0.00000i
Ajustement de courbe polynomiale
le polyfitLa fonction trouve les coefficients d'un polynôme qui correspond à un ensemble de données au sens des moindres carrés. Si x et y sont deux vecteurs contenant les données x et y à ajuster à un polynôme à n degrés, alors nous obtenons le polynôme ajustant les données en écrivant -
p = polyfit(x,y,n)
Exemple
Créez un fichier de script et tapez le code suivant -
x = [1 2 3 4 5 6]; y = [5.5 43.1 128 290.7 498.4 978.67]; %data
p = polyfit(x,y,4) %get the polynomial
% Compute the values of the polyfit estimate over a finer range,
% and plot the estimate over the real data values for comparison:
x2 = 1:.1:6;
y2 = polyval(p,x2);
plot(x,y,'o',x2,y2)
grid on
Lorsque vous exécutez le fichier, MATLAB affiche le résultat suivant -
p =
4.1056 -47.9607 222.2598 -362.7453 191.1250
Et trace le graphique suivant -
MATLAB fournit une commande pour travailler avec des transformations, telles que les transformations de Laplace et de Fourier. Les transformations sont utilisées en science et en ingénierie comme un outil pour simplifier l'analyse et regarder les données sous un autre angle.
Par exemple, la transformée de Fourier permet de convertir un signal représenté en fonction du temps en une fonction de fréquence. La transformée de Laplace nous permet de convertir une équation différentielle en une équation algébrique.
MATLAB fournit le laplace, fourier et fft commandes pour travailler avec les transformées de Laplace, Fourier et Fast Fourier.
La transformation de Laplace
La transformée de Laplace d'une fonction du temps f (t) est donnée par l'intégrale suivante -
La transformée de Laplace est également désignée comme transformée de f (t) en F (s). Vous pouvez voir que ce processus de transformation ou d'intégration convertit f (t), une fonction de la variable symbolique t, en une autre fonction F (s), avec une autre variable s.
La transformée de Laplace transforme les équations différentielles en équations algébriques. Pour calculer une transformée de Laplace d'une fonction f (t), écrivez -
laplace(f(t))
Exemple
Dans cet exemple, nous allons calculer la transformée de Laplace de certaines fonctions couramment utilisées.
Créez un fichier de script et tapez le code suivant -
syms s t a b w
laplace(a)
laplace(t^2)
laplace(t^9)
laplace(exp(-b*t))
laplace(sin(w*t))
laplace(cos(w*t))
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
ans =
1/s^2
ans =
2/s^3
ans =
362880/s^10
ans =
1/(b + s)
ans =
w/(s^2 + w^2)
ans =
s/(s^2 + w^2)
La transformation inversée de Laplace
MATLAB nous permet de calculer la transformée de Laplace inverse à l'aide de la commande ilaplace.
Par exemple,
ilaplace(1/s^3)
MATLAB exécutera l'instruction ci-dessus et affichera le résultat -
ans =
t^2/2
Exemple
Créez un fichier de script et tapez le code suivant -
syms s t a b w
ilaplace(1/s^7)
ilaplace(2/(w+s))
ilaplace(s/(s^2+4))
ilaplace(exp(-b*t))
ilaplace(w/(s^2 + w^2))
ilaplace(s/(s^2 + w^2))
Lorsque vous exécutez le fichier, il affiche le résultat suivant -
ans =
t^6/720
ans =
2*exp(-t*w)
ans =
cos(2*t)
ans =
ilaplace(exp(-b*t), t, x)
ans =
sin(t*w)
ans =
cos(t*w)
Les transformées de Fourier
La transformée de Fourier transforme couramment une fonction mathématique du temps, f (t), en une nouvelle fonction, parfois notée ou F, dont l'argument est la fréquence avec des unités de cycles / s (hertz) ou radians par seconde. La nouvelle fonction est alors appelée transformée de Fourier et / ou spectre de fréquences de la fonction f.
Exemple
Créez un fichier de script et tapez le code suivant -
syms x
f = exp(-2*x^2); %our function
ezplot(f,[-2,2]) % plot of our function
FT = fourier(f) % Fourier transform
Lorsque vous exécutez le fichier, MATLAB trace le graphique suivant -
Le résultat suivant s'affiche -
FT =
(2^(1/2)*pi^(1/2)*exp(-w^2/8))/2
Tracer la transformée de Fourier comme -
ezplot(FT)
Donne le graphique suivant -
Transformées de Fourier inverses
MATLAB fournit le ifouriercommande pour calculer la transformée de Fourier inverse d'une fonction. Par exemple,
f = ifourier(-2*exp(-abs(w)))
MATLAB exécutera l'instruction ci-dessus et affichera le résultat -
f =
-2/(pi*(x^2 + 1))
GNU Octave est un langage de programmation de haut niveau comme MATLAB et il est principalement compatible avec MATLAB. Il est également utilisé pour les calculs numériques.
Octave présente les caractéristiques communes suivantes avec MATLAB -
- les matrices sont des types de données fondamentaux
- il a un support intégré pour les nombres complexes
- il a des fonctions mathématiques et des bibliothèques intégrées
- il prend en charge les fonctions définies par l'utilisateur
GNU Octave est également un logiciel librement redistribuable. Vous pouvez le redistribuer et / ou le modifier selon les termes de la licence publique générale GNU (GPL) telle que publiée par la Free Software Foundation.
MATLAB contre Octave
La plupart des programmes MATLAB fonctionnent dans Octave, mais certains des programmes Octave peuvent ne pas s'exécuter dans MATLAB car, Octave autorise une syntaxe que MATLAB ne fait pas.
Par exemple, MATLAB prend en charge les guillemets simples uniquement, mais Octave prend en charge les guillemets simples et doubles pour définir les chaînes. Si vous cherchez un tutoriel sur Octave, alors veuillez parcourir ce tutoriel depuis le début qui couvre à la fois MATLAB et Octave.
Exemples compatibles
Presque tous les exemples abordés dans ce tutoriel sont compatibles avec MATLAB ainsi qu'avec Octave. Essayons de suivre l'exemple dans MATLAB et Octave qui produit le même résultat sans aucun changement de syntaxe -
Cet exemple crée une carte de surface 3D pour la fonction g = xe - (x 2 + y 2 ) . Créez un fichier de script et tapez le code suivant -
[x,y] = meshgrid(-2:.2:2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g)
print -deps graph.eps
Lorsque vous exécutez le fichier, MATLAB affiche la carte 3D suivante -
Exemples non compatibles
Bien que toutes les fonctionnalités de base de MATLAB soient disponibles dans Octave, il existe certaines fonctionnalités, par exemple, Calcul différentiel et d'intégration, qui ne correspondent pas exactement dans les deux langues. Ce tutoriel a essayé de donner les deux types d'exemples où ils différaient dans leur syntaxe.
Prenons l'exemple suivant où MATLAB et Octave utilisent différentes fonctions pour obtenir l'aire d'une courbe: f (x) = x 2 cos (x) for −4 ≤ x ≤ 9. Voici la version MATLAB du code -
f = x^2*cos(x);
ezplot(f, [-4,9])
a = int(f, -4, 9)
disp('Area: '), disp(double(a));
Lorsque vous exécutez le fichier, MATLAB trace le graphique -
Le résultat suivant s'affiche
a =
8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9)
Area:
0.3326
Mais pour donner une aire de la même courbe dans Octave, vous devrez utiliser symbolic paquet comme suit -
pkg load symbolic
symbols
x = sym("x");
f = inline("x^2*cos(x)");
ezplot(f, [-4,9])
print -deps graph.eps
[a, ierror, nfneval] = quad(f, -4, 9);
display('Area: '), disp(double(a));
Simulink est un environnement de simulation et de conception basé sur des modèles pour les systèmes dynamiques et embarqués, intégré à MATLAB. Simulink, également développé par MathWorks, est un outil de langage de programmation graphique de flux de données pour la modélisation, la simulation et l'analyse de systèmes dynamiques multi-domaines. Il s'agit essentiellement d'un outil de création de blocs graphiques avec un ensemble personnalisable de bibliothèques de blocs.
Il vous permet d'incorporer des algorithmes MATLAB dans des modèles ainsi que d'exporter les résultats de la simulation dans MATLAB pour une analyse plus approfondie.
Simulink prend en charge -
- conception au niveau du système
- simulation
- génération de code automatique
- test et vérification des systèmes embarqués
Il existe plusieurs autres produits complémentaires fournis par MathWorks et des produits matériels et logiciels tiers pouvant être utilisés avec Simulink.
La liste suivante donne une brève description de certains d'entre eux -
Stateflow permet de développer des machines d'état et des organigrammes.
Simulink Coder permet la génération de code source C pour l'implémentation en temps réel des systèmes automatiquement.
xPC Target ensemble avec x86-based real-time systems fournir un environnement pour simuler et tester les modèles Simulink et Stateflow en temps réel sur le système physique.
Embedded Coder prend en charge des cibles intégrées spécifiques.
HDL Coder permet de générer automatiquement des VHDL et Verilog synthétisables.
SimEvents fournit une bibliothèque de blocs de construction graphiques pour la modélisation des systèmes de mise en file d'attente.
Simulink est capable de vérifier et de valider systématiquement les modèles grâce à la vérification du style de modélisation, à la traçabilité des exigences et à l'analyse de la couverture des modèles.
Simulink Design Verifier vous permet d'identifier les erreurs de conception et de générer des scénarios de cas de test pour la vérification du modèle.
Utilisation de Simulink
Pour ouvrir Simulink, tapez dans l'espace de travail MATLAB -
simulink
Simulink s'ouvre avec le Library Browser. Le navigateur de bibliothèque est utilisé pour créer des modèles de simulation.
Dans le volet gauche de la fenêtre, vous trouverez plusieurs bibliothèques classées sur la base de divers systèmes, en cliquant sur chacun d'eux affichera les blocs de conception sur le volet droit de la fenêtre.
Modèles de construction
Pour créer un nouveau modèle, cliquez sur le Newsur la barre d'outils du navigateur de bibliothèque. Cela ouvre une nouvelle fenêtre de modèle sans titre.
Un modèle Simulink est un schéma de principe.
Les éléments de modèle sont ajoutés en sélectionnant les éléments appropriés dans le navigateur de bibliothèque et en les faisant glisser dans la fenêtre Modèle.
Vous pouvez également copier les éléments du modèle et les coller dans la fenêtre du modèle.
Exemples
Faites glisser et déposez des éléments de la bibliothèque Simulink pour créer votre projet.
Aux fins de cet exemple, deux blocs seront utilisés pour la simulation - A Source (un signal) et un Sink(une portée). Un générateur de signal (la source) génère un signal analogique, qui sera ensuite visualisé graphiquement par l'oscilloscope (le puits).
Commencez par faire glisser les blocs requis de la bibliothèque vers la fenêtre du projet. Ensuite, connectez les blocs ensemble, ce qui peut être fait en faisant glisser les connecteurs des points de connexion d'un bloc vers ceux d'un autre.
Faites glisser un bloc «Sine Wave» dans le modèle.
Sélectionnez «Sinks» dans la bibliothèque et faites glisser un bloc «Scope» dans le modèle.
Faites glisser une ligne de signal de la sortie du bloc sinusoïdal vers l'entrée du bloc Scope.
Exécutez la simulation en appuyant sur le bouton 'Run'bouton, en conservant tous les paramètres par défaut (vous pouvez les modifier à partir du menu Simulation)
Vous devriez obtenir le graphique ci-dessous à partir de la portée.