Problema di fitting di dati MatLab

di il
4 risposte

Problema di fitting di dati MatLab

Salve a tutti,
avrei urgente bisogno di aiuto in MatLab.
Ho un serie di dati che corrispondono a punti di una superficie in 3D.
Ogni punto quindi è formato dalle coordinate x,y e z.
E' possibile ricavare l'equazione f(x,y) che intepola i punti?
Ho provato a utilizzare l'help di MAtLab, ma le functions fornite: fit, polyfit ecc.. non sembrano essermi utili.

Grazie Davide

4 Risposte

  • Re: Problema di fitting di dati MatLab

    Per funzioni generiche usa "lsqnonlin":
    ad esempio se hai:
    
    x = [1,2,3];
    y = [1,2,3];
    z = [1,2,3;4,5,6;,7,8,9];
    surf(x,y,z);
    
    e' una superficie. Tu mettiamo che la vuoi fittare con una funzione di due parametri; definisci la tua funzione di fit a cui dovrai sottrarre i dati z(:):
    
    [X, Y] = meshgrid(x,y);
    fun = @(parametro) parametro(1)*X(:)+parametro(2)*Y(:)-z(:); 
    
    a questo punto "lsqnonlin" ti da' i valori di "parametro(1)" e "parametro(2)" in modo da fare i minimi quadrati di "fun" che e' la differenza tra la tua funzione di fit "(parametro(1)*X(:)+parametro(2)*Y(:))" e i dati veri z(:):
    
    lsqnonlin(fun,[1,1])
    
  • Re: Problema di fitting di dati MatLab

    Ti ringrazio per avermi già indirizzato.
    Il problema è che dovrei già conoscere a priori l'andamento della funzione.
    Questo per poter scrivere ad esempio:
    fun = @(parametro) parametro(1)*X(:)+parametro(2)*Y(:)-z(:);
    Ma se non conoscessi il tipo di funzione e quanti parametri inervengono?
    Devo ricavare l'equazione di molte superfici e ho a disposizione solo i punti di queste.
    Molte di queste possono essere superfici con più parametri in cui possono intervenire x,x^2,..x^n ecc.. e di cui non conosco l'andamento.

    Grazie
  • Re: Problema di fitting di dati MatLab

    No, scusa ma quello che chiedi non e' fattibile dal punto di vista matematico.

    Pensaci un attimo: una qualsiasi curva puo' essere fittata ad esempio da polinomi, ma il grado di questi lo devi decidere tu. Cioe' se prendi polinomi di grado 100 o 200 chiaramente verranno due fit diversi ma entrambi che approssimano bene le tue superfici. Non esiste un fit assoluto.

    Che tipo di dati hai ? Non hai un modello fisico da cui partire ? Delle leggi matematiche che regolano i tuoi dati ?
  • Re: Problema di fitting di dati MatLab

    Sto realizzando un programma per calcoli di tipo ingegneristico.
    In particolare a parità di caratteristiche meccaniche dei materiali, variando l'angolo elastico, ricavo dei risultati che plottati rappresentano delle superfici in 3d.
    Il mio scopo è quello di ricavare l'equazione di queste superfici al variare dell'angolo per poi arrivare a definire un equazione generale che sarà in funzione dei parametri meccanici e dell'angolo elastico.
    E' per questo che non posso conoscere a priori l'andamento delle singole superfici, se non plottandole ognuna e, guardando l'andamento, supporre il tipo di funzione.
    Ho notato che ad esempio a 45° è simile ad una sella, ma man mano che l'angolo elastico varia la superfici assume un andamento sempre meno lineare e intuibile.
Devi accedere o registrarti per scrivere nel forum
4 risposte