Why does gradient function calculates wrong dimensions?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Michael Mauersberger
el 30 de Abr. de 2020
Comentada: Michael Mauersberger
el 30 de Abr. de 2020
Hi there,
Why does the gradient function calculates the first two dimensions wrong?
Example:
[mshx,mshy,mshz] = ndgrid(0:.1:10,0:.1:10,0:.1:10);
[gxx,gyx,gzx] = gradient(mshx);
[gxy,gyy,gzy] = gradient(mshy);
[gxz,gyz,gzz] = gradient(mshz);
Here all gij are zero except for gyx, gxy, gzz. But how can I calculate the gradient more consistently so that all gij are zero except for gxx, gyy, gzz?
Thank you for your help.
Best regards
Michael
0 comentarios
Respuesta aceptada
Ameer Hamza
el 30 de Abr. de 2020
Editada: Ameer Hamza
el 30 de Abr. de 2020
Use meshgrid instead of ndgrid
[mshx,mshy,mshz] = meshgrid(0:.1:10,0:.1:10,0:.1:10);
[gxx,gyx,gzx] = gradient(mshx);
[gxy,gyy,gzy] = gradient(mshy);
[gxz,gyz,gzz] = gradient(mshz);
3 comentarios
Stephen23
el 30 de Abr. de 2020
Editada: Stephen23
el 30 de Abr. de 2020
Note that using meshgrid is not a general solution, it fails for N==1, i.e. when the input is a vector:
>> mshx = meshgrid(0:10);
>> gradient(mshx) % oops!
ans =
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
It could be made to work by providing the first input argument as a scalar and the second as the vector, but that requires special-case handling. This is not just a theoretical problem: it will be relevant if you write a general solution for any N, e.g. with comma-separated lists as to provide the inputs/outputs of the gridding function and calling gradient in a loop on the outputs.
The solution I gave in my answer to your other (identical) question works for all N, no special cases.
Más respuestas (0)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!