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')

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

nous écrivons -

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.