Trying to plot a radial contour
이전 댓글 표시
I am trying to plot a 2x2 contour subplot, it is supposed to be circular, but I either get lines or no plot at all or an error saying my z needs to be a 2x2 array.
function F = ratio_rp_bf(R,theta,bD)
for r = 1:length(R)
for b = 1:length(bD)
F(b,r) = (16/3).*(1./bD(b)).*(1./R(r)).^3.*abs(sqrt((1./R(r)).^4-2.*(1./R(r)).^2.*cos(2.*theta(r))+1));
end
end
bD = [0.1, 1.0, 10, 100];
R = (1:1.25:5);
c = R;
a = 1/2*bD;
b = abs(sqrt(c.^2 - a.^2));
theta = abs(atan(b./a));
[F] = ratio_rp_bf(R,theta,bD);
for b = 1:length(bD)
figure(1)
subplot(2,2,b)
x = R.*cos(theta);
y = R.*sin(theta);
z = F;
[x,y,z] = meshgrid(x,y,z);
[C,h] = contour(R,theta,bD,x,y,z);
clabel(C,h);
grid on
end
채택된 답변
추가 답변 (2개)
Walter Roberson
2013년 2월 16일
0 개 추천
Why are you trying to pass 6 parameters in to contour()? contour expects at most 4 numeric parameters (excluding name/value pairs)
댓글 수: 7
Kelly
2013년 2월 16일
Walter Roberson
2013년 2월 16일
When you use
[x,y,z] = meshgrid(x,y,z);
you make it harder to debug, as you are overwriting the variables you are meshgrid()'ing.
Before you do the meshgrid(), what are size(x), size(y), size(z) ?
Why are you looping over bD when nothing in your loop is affected by the looping other than which subplot you are plotting in?
Kelly
2013년 2월 16일
Walter Roberson
2013년 2월 17일
How can bD possibly be 1 x 2 when just above you have
bD = [0.1, 1.0, 10, 100];
which is 1 x 4 ??
Kelly
2013년 2월 17일
Walter Roberson
2013년 2월 17일
Have you tried restarting MATLAB? Then put in a breakpoint at the meshgrid line, and examine the size() and print the values of the variables to see how many entries show up and what they are.
Kelly
2013년 2월 17일
Image Analyst
2013년 2월 17일
0 개 추천
I'm not really sure I follow what you're trying to do, nor do I know what sort of output ratio_rp_bf() creates, but if you just want to draw dircles, see the FAQ:
If F is an image that you created that's supposed to be a circular cone so that contours on it would be concentric circles, then please upload that image since I don't have ratio_rp_bf() which creates it.
댓글 수: 5
Walter Roberson
2013년 2월 17일
The ratio_rp_bf function is at the very top of the posting.
Image Analyst
2013년 2월 17일
편집: Image Analyst
2013년 2월 17일
Oh you're right. But then wouldn't that make this a recursive function, since it's calling itself? Maybe I'm just not following it correctly because of the bad formatting. Where is the actual end of the ratio_rp_bf() function?
Kelly
2013년 2월 17일
Kelly
2013년 2월 17일
Walter Roberson
2013년 2월 18일
One of you has misinterpreted. The three-argument form of contour() is always X, Y, Z coordinates. To use specific contour levels, you need the two-input or four-input forms of contour(). See http://www.mathworks.com/help/matlab/ref/contour.html
Note that you have not included F in your contour() call.
카테고리
도움말 센터 및 File Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!