Axis problem in contour plotting

9 次查看(过去 30 天)
I have plotted this equation by this :
clear all
close all
a=1000;
b=1000;
v0=100;
V=zeros(1000);
V(:,1000)=0;
V(:,1)=0;
V(1,:)=0;
V(1000,:)=100;
[X,Y]=meshgrid(0.01:0.01:10, 0.005:0.005:5);
for x=1:1000
for y=1:1000
sum=0;
for k=1:111
n=(2*k)-1;
s=((sin(n.*pi.*x./a)).*(sinh(n.*pi.*y./a)))./(n.*sinh(n.*pi.*(b./a)));
sum=sum+s;
end
V(x,y)=(4.*v0./pi).*sum; %here
end
end
figure
[C,h]=contourf(V);
clabel(C,h)
grid on;
axis('square')
The problem is after running I get this sort of plot:
I am supposed to get something like this :
If I swap V(x,y) with V(y,x) [commented in the code], then I get the right axis. What is happening? Are my x,y values getting interchanged or something? How to resolve this issue? Kindly help!
Thanks!

采纳的回答

Star Strider
Star Strider 2019-7-31
If you use the meshgrid outputs (with one additional argument, so one additional matrix) you get the result you want. It also avoids the loops and is likely much faster:
a=1000;
b=1000;
v0=100;
[X,Y,K]=meshgrid(1:1000, 1:1000, 1:111);
N = 2*K-1;
s = @(x,y,n) ((sin(n.*pi.*x./a)).*(sinh(n.*pi.*y./a)))./(n.*sinh(n.*pi.*(b./a)));
V = 4*v0/pi*sum(s(X,Y,N),3);
figure
[C,h]=contourf(V);
clabel(C,h)
grid on;
axis('square')
I won’t post the plot image here, because it is the one you are supposed to get, and posting it would be redundant.
  6 个评论
Adam Danz
Adam Danz 2019-8-1
编辑:Adam Danz 2019-8-1
"Truly a MVP of this community"
@John Doe, I +1'd for ya ;)

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by