Salut, voici un fichier qui normalement doit bien fonctionner. Mais je n'ai pas pu le tester.
Il y a ici toutes les fonctions de bases. Avec ca, tu peux faire énormément de prgm.
cree toi un fichier main.m (par exemple)
recopie cet exemple
dans la feuille de travaille tape : main
(et normalement ca ne devrait pas planter)
clear all % efface toutes les variables qui sont dans la worksheet
close all % ferme toutes les figures
% pour afficher une variable, retirer le point virgule
% le 1e element d un tableau a l indice 1 (attention en c++ c est l indice 0 !!)
a=rand(3,5); % cree une matrice 3*5 de nombre aleatoire tires suivant la loi uniforme sur [0,1]
b=a'; % calcule la transconjugue de la matrice a (donc si a est une matrice de reels c'est la meme chose que la transposee)
c=1:5; % cree un vecteur ligne [1 2 3 4 5]
d=(1:0.1:4)'; % cree un vecteur colonne (car il y a la transconjuguee)
clear c % efface la variable c
e=d(1:10); % recupere les elements d'indices 1 a 10 du vecteur d
f=d(end-5:end); % recupere les 5 derniers elements de d
g=a(1,:); % on recupere la 1e ligne de a. C'est la meme chose que g=a(1,1:end)
h=sort(g); % trie dans l'ordre croissant le vecteur g
i=fliplr(g); % retourne le vecteur g de droite à gauche "fliplr pour flip left right"
j=flipud(d); % idem que i mais up down
jj=rand(1:30);
jjj=jj>0.2 % renvoie des 1 si la composantes est >0.2 et 0 sinon
find(jj>0.2); % renvoie les NUMEROS des INDICES qui ont les composantes > 0.2
figure(1) % on ouvre la 1e figure
plot(a(1,:),a(2,:),'r+') % trace en abscisse a(1,:) et en ordonnee a(2,:) en rouge (d ou le r) et avec des croix (d ou le +)
% faire help plot dans l'espace de travail
hold on % pour superposer plusieurs graphes sur la MEME figure car sinon le graphe suivant efface le graphe precedent
plot(a(2,:),a(3,:),'bo')
title('titre de la figure')
legend('1e graphe','2e graphe')
xlabel('toto')
ylabel('mimile')
axis equal % faire help axis (ce qui sert souvent est axis([xmin xmax ymin ymax])
v=0:0.001:2*pi;
x=cos(x); % prend le cosinus de chaque composante du vecteur v
y=sin(x);
figure(2) % on ouvre la 2e figure
plot(v,x,'y')
hold on
plot(v,y,'g')
legend('cosinus','sinus')
size(a);
size(a,1);
size(a,2);
length(d);
% concatenation de vecteurs
l=[1:5 10];
m=[1 2 3;4 5 6;7 8 9]; % les espaces ou la virgule c est la meme chose
n=[a(:,1) a(:,2)];
% les strings
o='ma_string';
length(o);
p=num2str(10); % convertit un nombre en une string
length(p)
str2num('10') % convertit une string en un nombre
q=['string1' 'string2']; % concatenation des deux strings
% donc en cumulant num2str et title on peut obtenir :
% title(['vitesse du solide en fonction du temps avec une vitesse initiale de',num2str(vit_ini),'metre par seconde'])
% en supposant que la variable vit_ini contienne un nombre
save nom_fichier % sauvegarde sur le disque dur TOUTES les variables dans le fichier nom_fichier.mat
%load('nom_fichier.mat') pour le charger
%save nom_fichier x y a ne sauvegarde que les variables x, y et a dans le fichier nom_fichier.mat
% les boucles, les tests
%for i=1:5
v(i)=2.5*i;
end
% en plus rapide ca donne v=2.5*(1:5);
% for i=1:5
% if(v(i)==2)
% aa(i)=4;
% elseif (v(i)>3)
% aa(i)=6;
% else
% aa(i)=8;
% end % fin du si
% end % fin du pour
% en plus rapide ca donne aa=4*(v==2)+6*(v>3)+8*(v<=3)
% soient 2 vecteurs de meme longueurs v1 et v2. Si la ieme composante de v1 est < 3 ou est > 6 alors v3=v2(i)
% le "ou" est | et le "et" est & et le "different" est ~=
v1=[1 4 3 0 -9 8 7 1 0.2 9 7 4];
v2=rand(1,length(v1));
%compteur=1;
% for i=1:length(v1)
% if( (v1(i)<3) | (v1(i)>6) )
% v3(compteur)=v2(i);
% compteur=compteur+1;
% end
% end
% en plus rapide :
% aux=find( (v1<3) | (v1>6) );
% v3=v2(aux);
% Matlab prefere la manipulation des vecteurs que l utilisation des boucles for !!!!
% Matlab pour Matrix Laboratory
compteur=1;
% while(compteur~=5)
% v4(compteur)=compteur;
% compteur=compteur+1;
% end
% en plus rapide : v4=1:4
faire aussi :
help det
help exp
help eig
help diag
help kron
help pause
help return
help disp
help prompt
pour faire une fonction que l'on va appeler ma_fonction qui prend un parametre et qui renvoie une valeur
1) ouvrir un fichier ma_fonction.m
2) function r=ma_fonction(a)
% on suppose que a est un vecteur
r=find(a>4); % renvoie les indices du vecteurs a qui ont une composantes > 4
3) dans ton script (que tu appelles main.m)
z=ma_fonction(w);
pour qu'une fonction renvoie plusieurs valeurs (des entiers, des matrices, des vecteurs)
function [entier,matrice,vecteur]=ma_fonction(vecteur)
les crochets et les virgules sont très importantes !
je crois que le vecteur renvoyé doit etre un vecteur colonne.
Pom