Fondamenti di GNU Octave per Statistica e Calcolo Numerico

Classificato in Elettronica

Scritto il in italiano con una dimensione di 7,78 KB

Gestione dei Pacchetti e del Workspace

Installazione pacchetti

Per gestire le estensioni in Octave, utilizza i seguenti comandi per l'installazione e il caricamento:

  • pkg install statistics
  • pkg install -forge package_name
  • Esempio: pkg install -forge statistics
  • pkg load statistics

Esempio di utilizzo della funzione tabulate:

z = [1 1 1 1 1 1 1 1 2 2 2 2 2 2]
tabulate(z)

Pulizia dello schermo e del workspace

Per mantenere l'ambiente di lavoro pulito:

  • clc: Pulisce la finestra dei comandi.
  • clear: Rimuove tutte le variabili dal workspace.

Rimozione di pacchetti

pkg uninstall statistics

Utilità e Help

Per consultare la documentazione interna:

  • help(tabulate)
  • help –list

Funzioni e Operazioni di Base

Funzioni in Octave che restituiscono due risultati

Esempio di una funzione personalizzata per calcolare massimo e minimo:

function [max_val, min_val] = maximin(x)
max_val = max(x);
min_val = min(x);
endfunction

Successione di numeri

Creazione di vettori con intervalli specifici:

  • x = 1:100 (da 1 a 100 con passo 1)
  • x = 1:3:30 (da 1 a 30 con passo 3)

Numeri e loro formato

Gestione della precisione decimale per la costante pi greco:

pi
format long
pi
format short
pi

Arrotondamento

  • round(x): Arrotonda all'intero più vicino.
  • fix(x): Arrotonda verso lo zero.

Statistica e Generazione di Dati

Generazione di un numero casuale

Esempio con distribuzione normale:

p = normrnd(1.0, 0.5, 1000, 1);
disp(mean(p));
disp(sqrt(sum((p - mean(p)).^2) / numel(p)));

Calcolo della Media

Funzione personalizzata per gestire set di dati vuoti:

function m = omean(l)
if (numel(l) == 0)
m = 0;
else
m = mean(l);
endif
endfunction

disp(omean([]));
disp(omean([1, 2, 3]));

Scostamento tra Media e Mediana

Funzione per misurare la normalità e visualizzare l'istogramma:

function normalita = normalita2(x)
mean(x) - median(x)
hist(x)
endfunction

Simulazione del lancio di tre dadi

Calcolo della somma su 100 lanci:

y = 0;
for (i = 1:100)
x = unifrnd(1, 6, [1 3]);
y(i) = sum(round(x));
endfor
hist(y)

Serie Storiche e Modelli

Comparazione di due serie storiche (cell-arrays)

Utilizzo di cell-arrays per iterare su più serie:

c = {s1, s2};
for i = 1:2
plot(c{i});
hold on;
disp("media"); mean(c{i})
disp("varianza"); var(c{i})
disp("deviazione standard"); std(c{i})
endfor

Stima del trend comparata

Utilizzo di polyfit per la regressione lineare:

s1 = a(1:24, 1);
s2 = a(1:24, 2);
c = {s1, s2};
for i = 1:2
t = 1:24;
y = polyfit(transpose(t), c{i}, 1);
plot(c{i});
yfit = y(1) * t + y(2);
plot(yfit);
hold on;
endfor

Finestre mobili nelle serie storiche

Calcolo di statistiche su segmenti di dati:

c = {s1, s2, s3, s4, s5, s6};
for i = 1:6
disp("media"); mean(c{i})
disp("varianza"); var(c{i})
disp("deviazione standard"); std(c{i})
endfor

Operazioni Avanzate e Scripting

Descrittiva e Grafica (uso di scripts)

Esecuzione di script esterni e controllo dimensioni:

analisi_dati
analisi_dati_grafica
analisi_grafica
size(A)

Matrice di dati e Valori Mancanti

Caricamento dati e gestione dei valori NA:

X = load('wellbeing.txt');
output_precision(1);
x = [1:30 NA];
b = isna(x);
if b != 1
disp('ok')
else
disp('no')
endif

Simulazione guasti (Distribuzione di Poisson)

y = 0;
for (i = 1:5)
y(i) = poissrnd(1, [1 1]);
endfor

Funzioni Matematiche Comuni

  • sin(x), cos(x), tan(x)
  • exp(x), abs(x)

Visualizzazione Dati

Grafici e Figure

Creazione di grafici lineari e gestione delle finestre:

x = linspace(0, 3*pi, 100);
y = sin(x);
plot(x, y);
figure;

Utilizzo di hold on per sovrapporre grafici:

plot(sin(x));
figure;
hold on;
plot(sin(x));

Statistiche Descrittive Rapide

mean(x)
mean(x); % Il punto e virgola sopprime l'output
var(x)
std(x)
skewness(x)
kurtosis(x)

Messaggi di Output

printf("Hello World!")
disp("Hello")

Algebra Lineare e Matrici

Operazioni tra Matrici

A = [1, 14, 24; 2, 1, 8; 1, 23, 12];
B = [32, 2, 3; 34, 2, 2; 3, 4, 5];
A + B
A - B

Matrici Particolari

  • eye(n): Matrice identità.
  • zeros(m, n): Matrice di zeri.
  • rand(n, m): Valori pseudocasuali uniformi.
  • randn(n, m): Valori pseudocasuali normali.

Proprietà delle Matrici

  • length(A): Lunghezza del vettore o dimensione massima.
  • size(A): Dimensioni della matrice.
  • det(A): Determinante della matrice.
  • X': Trasposta di un vettore o matrice.

Esempi Pratici Finali

Relazione tra variabili

Utilizzo di scatter plot e coefficiente di correlazione:

scatter(x1, x2)
corrcoef(x1, x2)

Regressione Polinomiale

p = polyfit(x2, x1, 2)

Caso Studio: Raffreddamento di un liquido

Modellazione di una relazione lineare con rumore:

x = 1:40;
y = 30.3 - 0.4 * x + normrnd(0, 1, [1 40]);
scatter(x, y)
y = transpose(y);
x = transpose(x);
p = polyfit(x, y, 1)

Voci correlate: