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 で Contour Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!