Outils pour utilisateurs

Outils du site


lang:matlab

; 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_]*

  • 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

  • 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:

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.

Cela 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 pour par des valeurs, é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

Condition: if condition1 code elseif condition2 code end

Boucle : for c = 1:3

XX

end Inverse: for c = 3:-1:1

OOP 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.
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

classdef AccountState 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.

Syntaxe d'une lambda : func = @() c : ici, une méthode lambda sans argument renvoit la variable c.

Matlab pointer https://fr.mathworks.com/help/matlab/matlab_external/passing-arguments-to-shared-library-functions.html

lang/matlab.txt · Dernière modification : 2024/02/01 09:42 de root