Slides Intro Matlab 2020
Slides Intro Matlab 2020
2019-20
Introduzione a
MATLAB
M. Porcelli
[email protected]
Altri riferimenti:
Tutor: Luis Ferroni
Tirocinante: Clara Di Matteo
Ricevimento:
Dipartimento di Matematica, Porta S. Donato 5 (ufficio B6)
5
History
MATLAB è l’acronimo di MATrix LABoratory
La prima versione fu scritta nel 1970 per corsi di teoria delle matrici,
algebra lineare e analisi numerica. MATLAB è quindi
fondamentalmente costruito su un software sofisticato che ha come
struttura di base la matrice.
http://www.gnu.org/software/octave/
7
Licenza Campus UNIBO
Licenza Campus UNIBO
Calcolo matriciale
Calcolo di radici di polinomi
Elaborazione di segnali ed immagini (toolbox)
Grafici: x-y e polari, grafica 3D
Sviluppo di algoritmi,
Modellizzazione, simulazione e creazione di prototipi,
Acquisizioni dati,
Analisi di dati e visualizzazione,
Sviluppo di applicazioni, con costruzione di interfacce
grafiche.
11
Overwiew
MATLAB è un linguaggio interpretato, gli errori sono facili da trovare ma è
lento in esecuzione. (Un linguaggio interpretato è un linguaggio di
programmazione le cui istruzioni vengono tradotte in linguaggio macchina solo
al momento dell’esecuzione).
12
MATLAB Toolbox: some
Mapping Toolbox fornisce gli strumenti e utilità per l'analisi di dati geografici e la
creazione di mappe.
Partial Differential Equation (PDE) Toolbox contiene gli strumenti per lo studio e la
soluzione di equazioni alle derivate parziali (PDE) in due dimensioni spaziali (2-D) e
nel tempo. Un insieme di funzioni di comando e una interfaccia utente grafica consente
di preelaborare, risolvere, e post elaborare PDE-generiche per una vasta gamma di
applicazioni tecniche e scientifiche.
Workspace
14
Command Window
>> 39*4.4+5
Risultato
15
Command Window
La command window permette di interagire
• Con MATLAB proprio come si digita su una calcolatrice
16
Command Hystory
Per visualizzare la
Command Hystory,
nel menu HOME,
selezionare Layout
17
Matlab Workspace
18
Current Folder
19
Current Folder (II)
20
Desktop Layout
Per tornare al
desktop layout di
Default
21
Matlab Help
• L’Help di Matlab è uno strumento estremamente potente per imparare.
• L’ Help non solo contiene informazioni teoriche, ma mostra anche esempi per
l’implementazione
22
Matlab Help
23
24
Utilizzo di Matlab
Due approcci
26
Tipi di dati
I tipi di dati predefiniti sono
scalari reali, complessi, carattere, logico
vettori e matrici reali, complessi, carattere
a = sqrt(3); Double
c = -2+i*8.2 Complex double
t = 1:10 Array di double
f = 1>0 Logical
q = 'k' Char
var_txt = ‘Questa stringa è assegnata alla variabile var_txt‘
Array di char
27
Tipi di dati
Complex
Complex numbers 16 byte
double
Result of a
Logical logical operation 8 byte
double (1=true, 0=false)
28
Variabili
Alcuni nomi non possono essere usati come nome di variabile:
for, end, if, while, function, return, elseif, case, otherwise,
switch, continue, else, global, break ……..
29
Variabili e costanti speciali
Nome Descrizione
ans Nome di default usato per i risultati
Inf ∞
pi
30
Vettore riga
2 3 7
Feedback di MATLAB
31
31
Vettore colonna
33
33
Generazione automatica di vettori
34
Generazione di Matrici
>> B = [ 1 2 ; 8 9 ] matrice definita ‘manualmente’, elemento per elemento
ans =
1 2
8 9
36
Concatenare, Appendere, …
>> R = [ 1 2 3 ] ; A =[A,[1;2;3]]
>> S = [ 10 20 30 ] ; A=
>> T = [ R S ] 2 0 1
T= 0 1 2
1 2 3 10 20 30 3 3 3
>> Q = [ R ; S ]
Q=
1 2 3
10 20 30
38
Espressioni
Le espressioni sono la componente fondamentale dei
comandi/istruzioni in MATLAB.
o Una espressione valuta un valore, che si può stampare,
testare, memorizzare in una variabile, passare ad una
funzione, o assegnare un nuovo valore ad una variabile
con un operatore di assegnazione.
o Una espressione da sola può essere una istruzione. Più
istruzioni contengono una o più espressioni che
specificano dati con cui si deve operare.
o Le espressioni includono variabili, riferimenti ad array,
constanti, e chiamate a funzioni, così come combinazioni
di queste con vari operatori.
39
Sintassi di base
40
Operazioni di base
1/4=4\1=0.25
41
Sintassi di base
Operatori matematici (su array ed elementi di array)
Array Elementi
+ Addizione + Addizione
- Sottrazione - Sottrazione
* Moltiplicazione .* Moltiplicazione
/ Divisione ./ Divisione
^ Potenza .^ Potenza
Attenzione alle dimensioni di una matrice nel calcolo matriciale
• Esempio: A: matrice 2x1 , B: matrice 2x2
A*B operazione non valida
B*A operazione valida
42
Operazioni sugli elementi
>> B = [ 1 2 ; 3 4 ]
B=
1 2
3 4
>> t = [ 0 : 0.01 : 10 ];
>> x = sin ( 2 * pi * t );
44
Altri operatori e funzioni
Per vettori, sum(x) è la somma degli elementi di x. Per matrici, sum(x) è un
vettore riga con la somma per colonne.
>> sum ( A ) A =[1 2 3
ans =
12 15 18 4 5 6
>> sum ( ans ) equivalente a sum(sum(A)) 7 8 9];
ans =
45
>> diag(A)
ans=
1
5
9
Tutte le function Matlab agiscono in questo modo. Altri esempi: sin(x), cos(x),
min(x), max(x), mean(x),…
45
Numeri Complessi
Sia data: MATLAB memorizza la parte reale
e immaginaria di un numero
complesso.
>> x = 3+4j
46
Formati di output
I risultati possono essere visualizzati in formati diversi
Esempio: >>y = 4/3
>>format short 5 cifre
1.3333
>>format short e 5 cifre
1.3333E+000
>>format short g 5 cifre
1.3333
>>format long 15 cifre
1.33333333333333
>>format long e 15 cifre
1.333333333333333E+000
>>format long g 15 cifre
1.33333333333333
>>format rat
default : format short
4/3
47
Formati di output
Riassumendo:
48
M-files ed Editor
1) Creare un M-file
HOME New Script
49
Editor
51
51
Esempio
Esercizio:
Scrivere uno script per calcolare il determinante di una matrice.
• Definire una matrice A 5x5 di numeri reali
• Calcolare il determinante di A (built-in function det )
• Salvare lo script come M-file di nome sdet.m
• Chiamare/eseguire lo script: sdet.m
52
52
Creare uno script
Usare l’Editor per scrivere il seguente script:
%script di esempio
A=[….];
d=det(A);
%stampa del risultato
d
53
53
Eseguire uno script
Dalla Command Window dare il comando:
>>sdet
• MATLAB cerca nelle directory di sua pertinenza se esiste un M-file
con questo nome
• Se lo trova lo carica in memoria e lo esegue, cioè esegue istruzione per
istruzione il contenuto dello script;
•L’output avrà la seguente forma
d=
40
>>
54
54
Controllo Input e Output
Funzione input: usata per un input interattivo.
Esempio:
>> disp(X) visualizza il contenuto dell’array, senza visualizzare il
nome dell’array
>> disp(‘The value of X is:’) visualizza la stringa
The value of X is:
56
Esempio
Esercizio:
Scrivere uno script per calcolare il fattoriale di un numero.
• Input: n
• Output : fc
• Chiamare lo script: sfattoriale.m
57
57
Creare uno script
Usare l’Editor per scrivere il seguente script:
%script di esempio
n=input(‘digita un intero positivo: ‘);
fc=factorial(n);
disp(‘Il fattoriale è ‘);
disp(fc);
•Salvare il programma usando salva con nome e dando ‘sfattoriale’ come
nome
•Se si è usato NOTEPAD per creare il file usare il nome ‘sfattoriale.m’
58
58
Eseguire uno script
Dalla Command Window dare il comando:
>>sfattoriale
•MATLAB cerca nella directory corrente se esiste un m-file con questo
nome
•Se lo trova lo carica in memoria e lo esegue, cioè esegue istruzione per
istruzione il contenuto dello script; nella fattispecie procede così:
digita un intero positivo: _
•Il cursore lampeggia in attesa che l’utente digiti un numero come input
digita un intero positivo: 7
Il fattoriale è
5040
>>
59
59
Controllo Input e Output
Funzione fprintf: utile per controllare l’output
Esempi:
fprintf(‘%10.7f’,var);
fprintf(‘%10.7f %10.7f’,var1,var2);
fprintf(‘%d %20.16e %e \n’,n,var1,var2);
Legenda:
%d formato intero
%f formato fixed point
%e forma scientifica
60
Modifichiamo lo script
Usare l’Editor per modificare lo script:
%script di esempio
n=input(‘digita un intero positivo: ‘);
fc=factorial(n);
fprintf(‘Il fattoriale è %10.7f \n‘,fc);
61
61
Controllo Input e Output
La funzione Menu: usata per un input interattivo scegliendo da
un menu
k = menu(‘title’,’option1’,’option2’,…)
choices = ['B','D','F'];
k = menu('What do you want? ',…
choices(1),choices(2),choices(3));
disp(['You picked ',choices(k)])
62
Caricare e salvare Dati
Durante il lavoro con MATLAB, si può avere la necessità di salvare
vettori e matrici definite nel programma. Per salvare il file dati nella
directory di lavoro, digitare
save filename
dove "filename" è un nome scelto dall’utente.
Per recuperare i dati nel seguito, digitare
load filename
>>save data; il nome del file che viene salvato è data.mat
>>load data; il nome del file letto sarà data.mat
>>load(‘data’); il nome del file letto sarà data.mat
>>save proj3.txt; il nome del file che viene salvato è proj3.txt
>>mydata = load(‘proj3.txt’); il nome del file letto sarà proj3.txt
e l’array sarà mydata
63
Pausa di riflessione
64
Programmare in MATLAB
Gli M-file sono macro di comandi MATLAB, sono
memorizzati come files ordinari di testo con l’estensione
"m", cioè filename.m
Ci sono due tipi di m-file MATLAB
65
65
Script vs function
Ci sono due tipi di m-file
Script
• Consiste di una lista di comandi e istruzioni che saranno
eseguiti sequenzialmente
Function
• Definisce una o più funzioni che possono essere chiamate
• In Matlab, una function è simile ad una function C/Fortran
• Ci sono diversi tipi di function Matlab
• Function anonime, che non richiedono un m-file ma solo una
singola espressione Matlab
• Function primarie e secondarie
66
Script vs function
Function file
Script file • Inizia con function
• Lista di istruzioni • Lista di istruzioni
MATLAB MATLAB
• Le variabili sono • Le variabili sono
globali locali
• Si esegue digitando il • Si esegue digitando il
nome del file nome del file e
dando i parametri
67
67
Script file
68
68
Functions
Funzioni primarie
• Funzioni primarie danno il nome al file
• Un numero di function secondarie possono
essere definite nello stesso file
• Funzioni primarie possono essere richiamate da
un qualsiasi punto (di uno script o altra
function) mentre le function secondarie
possono essere richiamate solo dalla
corrispondente function primaria.
69
Function
Sintassi
function [out1, out2, ...] = funname(in1, in2, ...)
Descrizione
function [out1, out2, ...] = funname(in1, in2, ...)
definisce function funname che accetta in ingresso
in1, in2, …etc. e restituisce in uscita out1, out2,…
etc.
70
Creare o aprire uno script
71
71
Editor e codice sorgente
Codice MATLAB
Numeri di linea
72
Creare una function
Usare l’Editor per scrivere la seguente function:
%esempio di function
function [fc]=ffattoriale(n)
fc=factorial(n);
73
73
Function template
I commenti sono usati per
spiegare le istruzioni MATLAB
% esempio di function
output nome function input
La prima
riga del file function [fc]=ffattoriale(n)
deve fc=factorial(n);
iniziare con
‘function’
built-in function
5040
>>
75
75
function per calcolare cos(x)
76
76
Esempio con functions secondarie
function [a,p] = polyGeom(s,n)
% polyGeom Calcola area e perimetro di un poligono regolare %
% Synopsis: [a,p] = polyGeom(s,n)
%
% Input: s = lunghezza di un lato del poligono
% n = numero dei lati del poligono
%
% Output: a = area del poligono
% p = perimetro del poligono
79
79
Esempio
if A > B
'greater‘ if condizione
elseif A < B istruzioni
'less'
elseif A == B end
'equal'
else
error('Unexpected situation')
end
if (x < 10)
disp(x); % only displays x when x < 10
end
80
Operatori relazionali
> Maggiore di
< Minore di
== uguale
~= Diverso da
(per ~ in una tastiera italiana premere ALT e digitare 126 nel tastierino numerico)
81
Operatori logici
& AND
| OR
~ NOT
82
for loop
Il ciclo for ripete gruppi di istruzioni per un numero
predeterminato di volte. Un end finale delimita le istruzioni del
ciclo.
Forma generale:
83
83
Esempi
for ii=1:m
for jj=1:n
A(ii,jj)=1/(ii+jj);
end
end
84
While … end
Il ciclo while ripete un gruppo di istruzioni un numero
indefinito di volte sotto il controllo di una condizione logica.
Un end finale delimita le istruzioni del ciclo.
Forma generale
while condizione
istruzioni
end
85
Esempio
Determinare il primo intero n per cui n! (fattoriale) è un
numero maggiore di 100.
n=1;
fatt=1;
while fatt<=100 prod(1:n) < 1.e10)
n=n+1;
fatt = fatt*n;
end
disp(n)
86
Strutture di Controllo
L’istruzione break
Esce dal ciclo for o while in cui è inclusa.
L’istruzione break può essere usata solo nel
corpo di un ciclo.
L’istruzione continue
Come break, viene usato solo dentro cicli for o
while. Salta il resto del corpo del ciclo,
provocando il passaggio alla successiva
iterazione del ciclo.
87
Esempio: continue
Output:
% Get inputs from the user.
array=input('Please enter the array to search :'); Please enter the array to search :[2 4
n=input('Please enter the number to be searched 5; 6 13 2; 5 3 11]
:'); Please enter the number to be
searched :13
% Get size of the array.
[r c]=size(array); row 1
column 1
% Search for n in the array. column 2
for ii=1:r column 3
fprintf('row %d\n',ii); row 2
for jj=1:c column 1
fprintf(‘column %d\n',jj); column 2
if(array(ii,jj)==n) 13 found at row 2, column 2
fprintf('%d found at row %d, column column 3
%d\n',n,ii,jj); row 3
continue; column 1
end column 2
column 3
end
ii is 3, jj is 3
end
fprintf(‘ii is %d, jj is %d\n', ii,jj);
88
88
Esempio: break
% Get inputs from the user. Output:
array=input('Please enter the array to search :');
n=input('Please enter the number to be searched Please enter the array to search :[2
:'); 4 5; 6 13 2; 5 3 11]
% Get size of the array. Please enter the number to be
[r c]=size(array); searched :13
89
89
Switch e case
L’istruzione switch esegue gruppi di istruzioni basandosi sul valore di una
variabile o di una espressione. Le parole chiave case e otherwise delimitano i
gruppi. Ci deve sempre essere un end a chiudere lo switch iniziale.
Forma generale :
switch switch_expr n = input('Enter a number: ');
case case_expr switch n
istruzioni case -1
disp('negative one')
case {case_expr1, case 0
case_expr2, ….} disp('zero')
istruzioni case 1
disp('positive one')
otherwise
otherwise
istruzioni disp('other value')
end end
90
90
Esercizio per casa - Esempio
% Generate computer’s choice
a=ceil(rand(1)*3);
% Get user input
user=input(' enter 1 for rock \n enter 2 for paper \n enter 3 for scissors ');
% Display your choice, The '\n' means skip to the beginning of the next line.
if a==1;
disp('I choose rock');
elseif a==2;
disp('I choose paper');
else
disp('I choose scissors');
end
% Display user's choice
if user==1;
disp('You choose rock');
elseif user==2;
disp('You choose paper');
else
disp('You choose scissors');
end
91
Esercizio per casa - Esempio
% Generate computer’s choice
a=ceil(rand(1)*3);
% Get user input
user=input(' enter 1 for rock \n enter 2 for paper \n enter 3 for scissors ');
% Display your choice
switch(a)
case{1}
disp('I choose rock');
case{2}
disp('I choose paper');
case{3}
disp('I choose scissors');
end
92
Esercizio per casa - Esempio
answer='y';
while answer=='y' % Display user's choice
% Generate computer’s choice switch(user)
a=ceil(rand(1)*3); case{1}
% Get user input disp('You choose rock');
user=input(' enter 1 for rock \n enter 2 for case{2}
paper \n enter 3 for scissors '); disp('You choose paper');
% Check for erroneous input otherwise
while user~=1 & user~=2 & user~=3 disp('You choose scissors');
user=input(' enter 1 for rock \n enter 2 for end
paper \n enter 3 for scissors '); win=[0 2 1 ; 1 0 2 ; 2 1 0];
end result=win(user,a);
% Display your choice % Display result
switch(a) if result==0
case{1} disp('Settle for draw!');
disp('I choose rock'); elseif result==1
case{2} disp('You win!');
else
disp('I choose paper'); disp('You are a loser!');
case{3} end
disp('I choose scissors'); answer=input('do you want to
end continue(y,n)? ','s');
end
93
Nomi di function come argomenti
handle_sum = @sum;
handle_sum([3 2]); % calcola la somma degli elementi del vettore [3 2]
94
Nomi di function come argomenti
Un function handle può essere dichiarato anche “al volo”, ossia su
una funzione non esistente
È un handle di una funzione “anonima” che
handle = @(x)x*3 accetta in ingresso un parametro formale x e
svolge su di esso una moltiplicazione.
function s = fsum(fun,a,b,n)
% fsum Calcola la somma dei valori f(x) su n punti in a <= x <= b
%
% Synopsis: s = fsum(fun,a,b,n)
%
% Input: fun = puntatore alla function f(x) da valutare
% a,b = estremi dell’intervallo
% n = numero di punti nell’intervallo
%
% Output: s = somma di f(x) in n punti nell’intervallo
96
Esempio
97
Esempio (2 variabili)
f ( x ) 1 k 2 sin 2 ( x )
function y=elf(x,k)
y=sqrt(1-k.^2.*sin(x).^2);
function s = fsum1(fun,a,b,n,p1)
x = linspace(a,b,n);
y = fun(x,p1);
s = sum(y);
>>s=fsum1(@(x,k)elf(x,k),0,pi,15,0.9)
s =
11.4430
98
Function feval
Valuta function, permette di definire il nome dinamicamente:
se function è una stringa contenente il nome di una function,
allora feval(function,x1,...,xn) valuta tale funzione nei valori x1,…,xn
assegnati.
Esempio:
>> feval('sin',0.6*pi) >> sin(0.6*pi)
ans = ans =
0.9511 0.9511
function s = fsum(fun,a,b,n)
% fsum Calcola la somma dei valori f(x) su n punti in a <= x <= b
%
% Synopsis: s = fsum(fun,a,b,n)
%
% Input: fun = (stringa) nome della function, f(x), da valutare
% a,b = estremi dell’intervallo
% n = numero di punti nell’intervallo
%
% Output: s = summa di f(x) in n punti nell’intervallo
100
Esempio
function s = fsum1(fun,a,b,n,p1)
f ( x ) 1 k 2 sin 2 ( x ) x = linspace(a,b,n);
y = feval(fun,x,p1);
s = sum(y);
101
Pausa di Riflessione
102
Grafici in MATLAB
MATLAB permette di realizzare dei grafici in una finestra speciale
definita con il comando figure. Per creare un grafico è necessario
definire un sistema di coordinate. Quindi, ogni grafico ha degli assi
coordinati che contengono la figure.
Comando Descrizione
plot(x,y) Genera il grafico
104
Grafici “continui”
105
105
Esempio
106
106
Esempio
108
108
Subplot
» t=-10:.01:10;
» y1=t;
Il comando subplot permette di
» y2=t.^2;
visualizzare più grafici distinti
» y3=exp(t);
» y4=abs(t);
nella stessa finestra grafica.
» subplot(221) Digitando subplot(m n p)
» plot(t,y1), si suddivide la finestra in m × n
title(‘Here is the line') finestre per grafici più piccoli e si
» subplot(222)
seleziona la finestra p-esima per il
» plot(t,y2),
grafico corrente.
title(‘Here is the parabola')
» subplot(223)
I grafici sono numerati lungo la
» plot(t,y3), prima riga, poi lungo la seconda e
title(‘Here is the exponential') così via.
» subplot(224)
» plot(t,y4),
title(‘Here is the absolute value')
113
Subplot
114
Example
subplot(133)
plot(t,y2),
hold on
plot(t,y1,'g.-'),
axis([0,3,-0.5,2])
subplot(131) subplot(132)
plot(t,y2,'b') plot(t,y2,'b')
hold on hold on
plot(t,y1,'r--') plot(t,y1,'k:')
axis([0,3,-0.5,2]) axis([0,3,-0.5,2])
115
Figure Tools
116
Figure Tools
I vari menù
consentono l’accesso a
vari strumenti.
117
Figure Tools
I vari menù
consentono l’accesso a
vari strumenti.
118
Figure Tools
Questa figura mostra una finestra grafica con tutti e 3 i tools grafici attivati.
119
Esportare un grafico
Esportare un grafico significa creare un file standard nel formato per
le immagini (come EPS o TIFF), che poi può essere importato in
altri documenti e applicazioni come word processors, pacchetti
software di graficazione, ecc.
120
Esportare un grafico
121
Esportare un grafico
Per scegliere la
dimensione del
carattere (font size)
dei testi del grafico,
selezionare Fonts
nella finestra di
dialogo Export
Setup - Properties.
Poi cliccare su Use
fixed font size e
fornire 8 nel
rettangolo.
122
Esportare un grafico
Selezionare il formato del File
124
plot3
>>t=0:0.1:10*pi;
>>x=exp(-t/20).*cos(t);
>>y=exp(-t/20).*sin(t);
>>z=t;
>>plot3(x,y,z);
>>title('Esempio di plot 3D');
>>xlabel('x');
>>ylabel('y');
>>zlabel('z');
125
mesh
>>x=linspace(0,2*pi,50); Crea una griglia di punti di valutazione a partire dai
>>y=linspace(0,pi,50); vettori x e y
>>[X,Y]=meshgrid(x,y);
>>Z=sin(X).*cos(Y); Notare l’uso del “.”
>>mesh(X,Y,Z);
>>title('Esempio di mesh (grafica wireframe)');
>>xlabel('x');
>>ylabel('y');
>>zlabel('z');
wireframe o wire frame model (lett. modello a fil di ferro ) indica un tipo di rappresentazione grafica di oggetti
tridimensionali. Con questo metodo vengono disegnati soltanto i bordi dell' oggetto, il quale di fatto resta trasparente al suo
interno (sembrando, appunto, costruito con fil di ferro).
126
surf
>>[X,Y]=meshgrid(-3:.2:3,-2:.2:2); Crea una griglia di punti di valutazione a
partire dai vettori -3:.2:3 e -2:.2:2
>>Z=exp(-(X.^2+Y.^2)/3);
Notare l’uso del “.”
>>surf(X,Y,Z);
>>xlabel('x');
>>ylabel('y');
>>zlabel('z');
127
Colormap e colorbar
surf(X,Y,Z)
colormap hsv
colorbar
surf(X,Y,Z)
colormap hsv
alpha(.4)
128
surf
surf(X,Y,Z,'FaceColor','red','EdgeColor','none')
camlight left;
lighting phong
129
Superficie da dati non uniformi
>>x=rand(100,1)*2*pi;
>>y=rand(100,1)*pi;
>>z=sin(x).*cos(y);
>>xlin=linspace(min(x),max(x),40);
>>ylin=linspace(min(y),max(y),40);
>>plot3(x,y,z,'.','MarkerSize',15);
130
Superficie in forma parametrica
>>n=31;
>>theta=pi*(-n:2:n)/n;
>>phi=(pi/2)*(-n:2:n)'/n;
>>X=cos(phi)*cos(theta);
>>Y=cos(phi)*sin(theta);
>>Z=sin(phi)*ones(size(theta));
>>surf(X,Y,Z);
>>title('Esempio di surf in forma parametrica');
>>xlabel('x');
>>ylabel('y');
>>zlabel('z');
>>grid on;
>>axis square;
131
Manipolare la superficie
la figure toolbar e la camera toolbar permettono di esplorare
interattivamente il grafico 3-D. Si visualizza la camera toolbar
selezionando Camera Toolbar dal menu View della figura.
L’illustrazione sotto mostra entrambe le toolbars con il tool
Rotate 3D selezionato.
132
Esercitiamoci sui grafici
133
Il modo migliore per
imparare MATLAB
è usarlo!
134