Error when using abs: Too many input arguments

조회 수: 1 (최근 30일)
Sergio Manzetti
Sergio Manzetti 2021년 6월 22일
댓글: Dhruv G 2021년 6월 22일
Hi, I am trying to plot the contour of the given function with the following:
syms r x y k z
[ph,r] = meshgrid((0:5:360)*pi/180,0:.5:10);
[X,Y] = pol2cart(ph,r);
Z = X+i*Y;
J = besselj(k,l.*r);
J2 = besselj(k,m.*r);
Y = bessely(k,l.*r);
Y2 = bessely(k,m.*r);
H = besselh(k,r);
F1 = symsum((J).*exp(1i*k*ph),k,-5,5);
F2 = symsum((J2+Y2).*exp(1i.*k.*ph),k,-5,5);
F3 = symsum(H.*exp(1i.*k.*ph),k,-5,5);
pwu = nan(size(F1), 'like', F1);
mask = 0 <= r & r < 0.5;
pwu(mask) = F1(mask);
mask = 0.5 <= r & r < 1;
pwu(mask) = F2(mask);
mask = r >= 1;
pwu(mask) = F3(mask);
U = subs(pwu, {l, m}, {1.5, 3});hold on
contour(X,Y,abs(double(U)),30)
axis equal
xlabel('r','FontSize',14);
ylabel('phi','FontSize',14);
But I get the error that there too many input arguments. If I remove "double" from the 4th last line, then it says input arguments must be numeric so to be converted to a double. So which way is correct here?
Thanks!

답변 (1개)

Dhruv G
Dhruv G 2021년 6월 22일
If you type 'U' in the command window you would find that it is an array of symbolic equations (or expressions I'm not too sure). I think this is happening due to the symsum in your code. This is why it's not possible to cast U into a double and why you're getting the error.
  댓글 수: 2
Sergio Manzetti
Sergio Manzetti 2021년 6월 22일
Thanks for this. Does it mean I cannot plot the contour of this function?
Dhruv G
Dhruv G 2021년 6월 22일
I think if you replace symsum with a function that does what you want numerically it should be possible

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

카테고리

Help CenterFile Exchange에서 Calculus에 대해 자세히 알아보기

태그

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by