Fare derivate con Matlab senza espressione analitica?

Gendarmevariante1
Ciao a tutti!
Ho un problema con Matlab: praticamente ho a disposizione un numero molto grande di dati sperimentali e devo studiarne l'andamento per verificare alcune equazioni teoriche. Il problema è che a un certo punto dovrei svolgere una derivata di una certa grandezza e non so come fare!
Ho a disposizione:
- un vettore A di dati sperimentali
- un vettore x che contiene 54 punti nello spazio (su un solo asse di riferimento) in cui sono stati misurati i valori di A
Il vettore x NON E' equispaziato, cioè i punti sull'asse non stanno tutti alla stessa distanza.
Io dovrei appunto fare il grafico della derivata $(dA)/(dx)$.

Suggerimenti? (Considerato che io con questo programma sono solo agli inizi e quindi non conosco molte funzioni!)

Io avevo provato a fare così ma non ho idea se sia giusto o no:

        xx=linspace(0,x(end),54);  % in questo modo ho un nuovo vettore xx equispaziato
        A1=interp1(x,A,xx);          % interpolo A sui punti del nuovo vettore xx
        h=xx(2)-xx(1);                  % lunghezza del Delta x
        DA=diff(A)/h;                   % faccio la derivata
        xxx=xx;                           % costruisco un nuovo vettore xxx che contenga i centri degli intervalli del precedente vettore xx

        for i=1:length(xx)
            xxx(i)=xx(i)+h/2;
        end
        xxx=xxx(1:(end-1));        % tolgo l'ultimo punto perché sta fuori dall'intervallo del vettore xx originario

        DA=interp1(xxx,DA,x);    % ritorno in x
        plot(x,DA);



Grazie a chi vorrà rispondere :)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.