Gradient function not matching array dimensions

I have the function
psi=y+atan2(y,x)*0.5/pi;
which is classified as a 51x51 double for its value. How would I take the gradient of x and y for this function?

 Akzeptierte Antwort

Matt J
Matt J am 16 Mär. 2023
Alternatively, why not use the gradient command?
psi =rand(51);
[gradx,grady]=gradient(psi);
whos psi gradx grady
Name Size Bytes Class Attributes gradx 51x51 20808 double grady 51x51 20808 double psi 51x51 20808 double

Weitere Antworten (1)

Matt J
Matt J am 16 Mär. 2023
The expression for the gradient is very simple. Why not just apply the analytical expression on whatever meshgrid you are working with?
syms x y real
syms psi
psi=y+atan2(y,x)/2/pi;
g=simplify(gradient(psi))
g = 

2 Kommentare

Thanks! Is there a way to separate the components for it? I'm trying to get the u and v values for the stream function
Perhaps as follows?
function [Gx,Gy]=mygrad(X,Y)
den=2*pi*(X.^2+Y.^2);
Gx=-Y./den;
Gy=X./den+1;
end

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Linear Algebra finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2023a

Gefragt:

am 16 Mär. 2023

Kommentiert:

am 16 Mär. 2023

Community Treasure Hunt

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

Start Hunting!

Translated by