Matlab 画图问题

如何将图中每条线的水平方向的最小值标出来
并用虚线将所有最小值连起来
图如下
syms wAngle dAngle M
dAngle=0:5:35
i=0;
for i=1:8
dAngle(i)=dAngle(i)*(pi/180);
f(i)=2*cot(wAngle*(pi/180))*((M.^2*sin(wAngle*(pi/180)).^2-1)/((M.^2*(1.4+cos(2*wAngle*(pi/180)))+2)))-tan(dAngle(i));
ezplot(f(i),[1 4 0 90]);
hold on;
end
grid;
xlabel('M');
ylabel('wAngle');
hold off
好像不行啊
能不能把完整的程序写出来
谢谢

还是不行啊
我运行过了

我的版本是7.0.0.19920 (R14)
能运行只不过就只有我以前的八条线
我要的图中每条线的水平方向的最小值没标出来
虚线也没出来

我在电脑上运行只有我的八条线没有虚线

第1个回答  2009-09-11

您好。

我所发的所有程序都在自己的电脑上检验并通过。但由于条件所限,无法在更多机子和不同版本的matlab上进行检验,出现各种问题在所难免。

也就是说系统没报错,请将您运行后得到的x和y的值贴出来,如果可以的话请发张您运行后得到的图,谢谢。

下图为在我电脑上的运行截图。

syms wAngle dAngle M 

dAngle=0:5:35

i=0;

for i=1:8

dAngle(i)=dAngle(i)*(pi/180);

f(i)=2*cot(wAngle*(pi/180))*((M.^2*sin(wAngle*(pi/180)).^2-1)/((M.^2*(1.4+cos(2*wAngle*(pi/180)))+2)))-tan(dAngle(i));

ezplot(f(i),[1 4 0 90]);

hold on;

end

grid;

xlabel('M');

ylabel('wAngle');

hold off 

x=[];y=[];

h=get(gca,'Children');

for j=h'

    [tmp,idx]=min(get(j,'xdata'));

    x=[x,tmp];

    tmp=get(j,'ydata');

    y=[y,tmp(idx)];

end

hold on

plot(x,y,':') 

text(x,y,num2cell(x))

第2个回答  2009-09-11
先用min求出最小值然后用text或者gtext标记,再就是hold on然后画虚线连接
相似回答