is possible use some function to find derivatives of a vector?
2 ビュー (過去 30 日間)
古いコメントを表示
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?
0 件のコメント
回答 (3 件)
Azzi Abdelmalek
2012 年 11 月 30 日
編集済み: Azzi Abdelmalek
2012 年 12 月 2 日
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 件のコメント
Jan
2012 年 12 月 2 日
編集済み: Jan
2012 年 12 月 2 日
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
2012 年 12 月 2 日
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.
Jan
2012 年 12 月 1 日
Matlab's GRADIENT is accurate in the fist order only for not equidistant input. See FEX: DGradient and FEX: central_difference.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!