Borrar filtros
Borrar filtros

is possible use some function to find derivatives of a vector?

2 visualizaciones (últimos 30 días)
jonathan valle
jonathan valle el 30 de Nov. de 2012
by example:
NO2=( 1.1 2.4 3.3 4.7 5.9 6.0)' that corresponding to depth: Z=(4.5 6.2 8.4 10.3 12.5 14.8)'
I want find d(NO2)/dz and d^2(NO2)/dz^2
Exist some function that calculate this?

Respuestas (3)

Azzi Abdelmalek
Azzi Abdelmalek el 30 de Nov. de 2012
Editada: Azzi Abdelmalek el 2 de Dic. de 2012
Edit
NO2=[1.1 2.4 3.3 4.7 5.9 6.0]
Z=[4.5 6.2 8.4 10.3 12.5 14.8]
d1=diff(NO2)./diff(Z)
d2=diff(NO2,2)./diff(Z(2:end)).^2
  6 comentarios
Jan
Jan el 2 de Dic. de 2012
Editada: Jan el 2 de Dic. de 2012
As far as I can see, your approximation is based on the assumption, that Z is equidistant. This is neither the general case, nor does it match the question. Therefore I think, that this approximation in unnecessarily rough, especially if the 2nd derivative is wanted.
Your method, cropped edges:
d2 = [-0.0826, 0.1385, -0.0413, -0.2079]
Suggest 2nd order method, one-sided differences at the edges:
d2 = [-0.0912, -0.0563, 0.0126, -0.0555, -0.1354, -0.1116]
Azzi Abdelmalek
Azzi Abdelmalek el 2 de Dic. de 2012
No, even Z is not equidistant, there is no reason that diff(Z) will change at each point, we are not looking for the variation of Z, it's No2. if the approximation is bad, it's because the distance between Z's value is big. To improve the result, maybe we can interpolate.

Iniciar sesión para comentar.


Image Analyst
Image Analyst el 30 de Nov. de 2012
How about the gradient() function?

Jan
Jan el 1 de Dic. de 2012
Matlab's GRADIENT is accurate in the fist order only for not equidistant input. See FEX: DGradient and FEX: central_difference.

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by