%%%% Codice Matlab per operazioni elementari
%%%  il carattere % e' utilizzato per i commenti

clear all;  %cancella tutte le variabili definite nel workspace di matlab;
close all;  %chiude tutte le figure aperte

%%% definizione di variabili ed operazioni elementari

a = 2;
b = 2   % senza punto e virgola il dato viene scritto nel workspace
c = [ 2 4 5 1] %vettore riga
d = [ 2 ; 4; 5; 1] %vettore colonna
e = c'  % trasposizione di vettore o matrice. in questo caso il vettore riga c viene trasformato in vettore colonna
f = [ 1 3 4 ; 1 1  2; 1 3 3] %matrice 3x3 il carattere ";" indica una nuova riga
g = zeros(2,4) % genera una matrice 2righex4colonne
help zeros % help da informazioni sul comando o funzione specificata
h = c*d %moltiplicazione vettoriale di una matrice 1x4 per una matrice 4x1 equivalente ad una matrice 1x1 (scalare)
         % le dimensioni delle matrici devono essere opportune mxn
         % moltiplica nxp
i = eye(3) %matrice identita' di dimensione 3
l = inv(f) %inversa di una matrice 
m = exp(4) %esponenziale
n = expm(f) %esponenziale di una matrice

o = linspace(0,10,250) % vettore riga di 250 punti equispaziati tra 0 e 10

% crea vettore riga tramite ciclo for
for j= 1:15
    p(1,j)=j^2
end

i = 2  %riassegna la variabile i
q = 1 + 4*i % genera il numero q = 1+4*2=9
clear i; %cancella la variabile i
q = 1 + 4*i  %crea numero complesso con parte reale 1 e parte immaginaria 4. 
              %ATTENZIONE che se la variabile i puo' essere utilizzata come sopra e puo' portare ad errori
r = sqrt(4)  %radice quadrata
s = sqrt(-1) % crea numero complesso s=0+i
t = 1 + 4*sqrt(-1) %metodo sicuro per creare numero complesso
w = real(t); % parte reale
x = imag(t); % parte immaginaria
u = abs(t) % modulo di un numero anche per numeri complessi
v = angle(t) % fase di un numero complesso tra -pi e pi
v = v*180/pi
z = pi %pi greco

%%% crea if-else 

if a == 0  % ATTENZIONE a non scrivere a=0
    b=1
else
    b=0
end

c= log(3) % logaritmo naturale
c = log10(3) %logartimo base 10

%%% grafico di una figura

t = linspace(0,10,100) %vettore
y = sin(t)  %screa un vettore calcolando il seno di ogni elemento del vettore ingresso

figure(1) %figura 
plot(t,y,'k')                                        % grafico colore nero (sistema linearizzato) , 'r' per rosso
xlabel('tempo [sec]') 
ylabel('tensione e [V]') 
title('Risposta a ingresso i a gradino unitario con ingresso \phi = 2') 

hold on; %tiene tutti grafici nella figura 
z = y/4
plot(t,z,'r') 

%%%%% salvataggio dei dati

save dati a b y z % salva solamente a b y z nel file dati.mat
save dati  % salva tutti i dati nel workspace di matlab nel file dati.mat


whos  % mostra la variabili attualmente disponibili in matlab e il loro formato
clear all % cancello tutti i dati 
whos
load dati % carica tutti i dati che arano in dati.mat
whos


%%%% dimensioni dati

n=length(y) %dimensione del vettore
m = size(f,1) %numero righe della matrice f
k = size(f,2) %numero colonne della matrice f

last = y(end) %ultimo elemento di y
dy = diff(y) %dy(i)=y(i+1)-y(i)    notare che dy e' di dimensione inferiore di un elemento rispotto a y


%%%%% altro

a = [1 2 3 4];
b = [2 3 4 4];
c = a.*b %prodotto termine a termine c(i) = a(i)*b(i)
d = b.^2 %quadrato termine a termine

%%%%% operazioni con polinomi

%y1 = s^2+3s+2  y2 = s^2+6  y3=y1*y2 
y1 = [1 3 2];
y2 = [ 1 0 6];
y3 = conv(y1,y2)

%% poli complessi coniugati p1= a-i*b e p2=a+i*b  y4=(s-a+i*b)*(s-a-i*b)
y4 = conv([1 2-i*3],[1 2+i*3])





    


