=====Syntaxe=====
====Base====
'';'' en fin de ligne : désactive la sortie standard
''ans'' : résultat de la dernière commande exécutée. Modifiée avec ou sans l'utilisation du '';'' en fin de ligne.
Les variables sont sensibles à la casse.
nom des variables valides ''[a-zA-Z][a-zA-Z0-9_]*''
====Blocs====
* Condition
if condition1
code
elseif condition2
code
end
* Boucle
for c = 1:3
XX
end
Inverse:
for c = 3:-1:1
* Lambda
''func = @() c'' : ici, une méthode lambda sans argument renvoie la variable c.
* Matlab pointer
https://fr.mathworks.com/help/matlab/matlab_external/passing-arguments-to-shared-library-functions.html
====Types====
scalar : tableau 1*1 : ''x=4''
row vector : 1*x : ''y = [7 9]''
column vector : x*1 : ''z = [7;9]''
matrix : x*x : ''c=[5 6 7;8 9 10]''
cell : ''%%{1, "coucou"}%%''
vecteur ligne de 1 à 10 inclus : ''1:10'' ou ''[1:10]''
Boucle : avec un pas de 2 : ''1:2:10''
====Matrix====
Pour accéder à une valeur d'un tableau, il faut utiliser les parenthèses. La numérotation des index commence à 1.
''data(6,3)''
''data(end, end)'' dernier élément de lignes / colonnes
''data(8)'' va renvoyer la 8ème valeur en parcourant par colonne.
''data(:,2)'' : renvoie la 2ème colonne.
''data(:,2:3)'' : renvoie la 2ème et 3ème colonne.
''data(:,[1 3])'' : renvoie la 1ère et 3ème colonne.
Si on ajoute une donnée en dehors de la taille de la matrice, la taille est automatiquement ajustée.
Attention si on a une matrice d'objet. Si l'objet n'a pas de constructeur vide, il ne faut pas avoir de valeur vide. Sinon l'erreur ''Not enough input arguments.'' va apparaître.
L'assignation de sous-matrix fait une copie :
v2 = data(:,end)
v2(1) = 0.5
data n'a pas changé.
Modifier un tableau avec une seule valeur : ''va + 1''. L'opérateur * est une multiplication matricielle. Si on veut seulement multiplier par une seule valeur, élément par élément : ''.*''
x = [1 2;3 4;5 6; 7 8].*[1;2;3;4]
1 2
6 8
15 18
28 32
Extraire les valeurs d'un résultat multiple : ''[dr, dc] = size(data)''.
''[vMax, ivMax] = max(v)'' : renvoie la valeur max et l'indice de la valeur max par colonne.
Pour ignorer une des valeurs : utiliser le ~ : [~, ivMax] = max(v)
Il est possible de nommer les lignes et colonnes d'une matrix:
sample = rand(3,3);
rowNames = {'a','b','c'};
colNames = {'x','y','z'};
sTable = array2table(sample,'RowNames',rowNames,'VariableNames',colNames)
On y accède avec un ''.'' : ''sTable.a''.
====Programmation orienté objet====
Les properties sont en PascalCase.
Dans un objet, on ne peut pas ajouter de ''properties''.
Dans une structure (comme un objet mais sans sa déclaration via ''classdef''), on peut créer les ''properties'' à la volée.
% En héritant de handle, l'objet n'est plus passé en copie mais toujours en référence (ou pointer).
classdef idstick < handle
enumeration
Open, Closed
end
properties (SetAccess = private)
PropertyName (size) type {check1, check2, ...} = defaultvalue
% https://fr.mathworks.com/help/matlab/data-types.html
% https://fr.mathworks.com/help/matlab/matlab_oop/property-validator-functions.html
% Si le type est spécifié, les check vont être appliqués après que la valeur est été castée (si possible).
% Donc avec ''string {mustBeText}'', mettre 42 est "valide" car 42 car être casté en string puis vérifié que c'est bien un text.
% Donc avec ''{mustBeText}'' sans type, mettre 42 est invalide car 42 n'est pas un text.
end
properties (SetAccess = immutable)
SerialNumber (1,1) uint32
end
methods
% Constructeur. Pas besoin de obj au debut.
function obj = idstick(snum, other)
arguments
snum string {mustBeTextScalar}
other % All must be written
end
obj.SerialNumber = snum;
end
function [x,y] = signal(obj,other)
if ok
if (id.Status == "Ready") || (id.Status == "Done")
disp("Beep beep")
else
disp("Beep")
end
else
disp("Buzz")
end
end
end
end
Attention. Tout est en copie sauf si l'objet hérite de ''handle''. Modifier obj depuis une méthode ne modifiera pas la variable obj initiale.
=====Commandes=====
* Workspace
''load/save filename parameters'' : charge / enregistre l'environnement de travail dans le fichier ''filename.mat''. Si un paramètre est défini, cela ne va charger / enregistrer que les variables spécifiées.
''clear'' : vide l'espace de travail (perte des variables).
''clear all'' : nettoie intégralement le workspace. https://fr.mathworks.com/help/matlab/ref/clear.html
''clc'' : vide la console sans vider l'espace de travail.
''format long'' (15 décimales) / ''format short'' (4 décimales) : modifier le nombre de décimales.
''whos'' : toutes les variables de l'environnement
''properties(id)'' et ''methods(id)'' : introspection de l'objet.
''class(defaultVal)'' : namespace.classname