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?

 채택된 답변

Matt J
Matt J 2023년 3월 16일
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

추가 답변 (1개)

Matt J
Matt J 2023년 3월 16일
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

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

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Linear Algebra에 대해 자세히 알아보기

제품

릴리스

R2023a

질문:

2023년 3월 16일

댓글:

2023년 3월 16일

Community Treasure Hunt

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

Start Hunting!

Translated by