How to find Jacobian of a vector field given as a dataset?

16 views (last 30 days)
I have a dataset given in 3x 1 x m x n x l. 3x1 vector at each point of m x n x l 3D tensor holds the velocity vector [u,v,w]. How do I estimate the Jacobian matrix at each point?
  7 Comments
Mirlan Karimov
Mirlan Karimov on 12 Jun 2020
Alex, the domain is fixed.
Yes, I found that velocity gradient as a term is quite confusing. As you noted, the gradient well suits the situations where there is deformation and we measure at each point how the point moves.
Anyway, my method works correctly as I benchmarked it with a data set generated from an analytical velocity field. I just wanted to know if there is a better way of doing this.
J. Alex Lee
J. Alex Lee on 12 Jun 2020
Edited: J. Alex Lee on 12 Jun 2020
Great, glad that you have a working method!
Just to note that I don't think "velocity gradient" is confusing at all...I think "deformation gradient" could potentially be confusing.
Back to the actual question at hand:
I think your method is as good as can be unless you want to try to compute with higher accuracy finite differences (TMW's gradient() function uses central differences; docs also state that edge gradients are approximated by one-sided differences, which are only 1st order accurate). Added effort for higher "accuracy" would probably go to waste unless your velocities were computed using similarly accurate FDs (if you method is based on FD).
If you're extracting the nodal solutions from an FEM-based code (I've seen it before on Answers), you might be better off computing the gradients within the FEM framework and exporting it, if you have control over that.

Sign in to comment.

Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!