MATLAB轴具有常量值

时间:2012-10-12 03:54:36

标签: matlab

我正在研究一个项目,该项目在y轴上绘制deltaL,在x轴上绘制Fnet。脚本如下:

%Variables for delta L
L=518;
E=1040000000;
A=0.0020268;

%Variables for Form Drag
Ad=25.437;
Cd=2.015;
p=999.835;
v=2.02917;

%Array for theta
theta=0:pi/360:pi/45;

Fd=0.5*p*Cd*v^2;

T=(L/2).*tan(theta);

Fnet=sqrt((T.^2)+(Fd.^2));

deltaL=(Fnet.*L)./(E.*A);

plot(Fnet,deltaL,'.');

绘制数据时,x轴上的值都相同,y轴上的值也相同。 x和y值不同。但是,我的图表仍然会创建我的数据的工作模型。是否有一段我的代码导致了这个问题,或者在matlab中是否存在一些可以某种方式修复的故障?

3 个答案:

答案 0 :(得分:2)

这是因为x / y轴值的精度不够高。

您可以使用此页面中的技巧:http://www.mathworks.fr/support/solutions/en/data/1-3P8CU0/index.html?product=ML&solution=1-3P8CU0

old_ticks = get(gca, 'ytick')';
new_tick_labels = cellfun(@(x) sprintf('%9.6f',x), num2cell(old_ticks), 'uniformoutput', false);
set(gca, 'yticklabel', new_tick_labels)
old_ticks = get(gca, 'xtick')';
new_tick_labels = cellfun(@(x) sprintf('%9.6f',x), num2cell(old_ticks), 'uniformoutput', false);
set(gca, 'xticklabel', new_tick_labels)

结果(右键单击+“显示图像”以获得更好的分辨率):

enter image description here

答案 1 :(得分:1)

您正在尝试绘制以非常小的幅度与其初始值相比增加的值。例如,如果你改为绘图

 plot(Fnet-Fnet(1),deltaL-deltaL(1),'.');

您将看到这些变化的相关数字。

一种可能的解决方案是根据您的需要编辑xtick-labels和ytick-labels。例如

    plot(Fnet,deltaL,'.');
    yt=get(gca,'YTick')'
    set(gca,'YTick',yt,'YTickLabel',num2str(yt,'%.6f')); 

enter image description here

实际上,你可以在一行中完成!只需添加:

   set(gca,'YTick',get(gca,'YTick')','YTickLabel',num2str(get(gca,'YTick')','%.6f'));

答案 2 :(得分:0)

嗯,X和Y上的值是不一样的 - 只是Matlab将数字四舍五入才能显示为4或5位数(这是有意义和有意义的行为)。您需要选择适当的数据表示(例如,对X和Y数据使用偏移量)。

例如

 xofs = round(mean(Fnet)*100)/100;
 yofs = round(mean(deltaL)*10000)/10000;
 plot( Fnet-xofs, deltaL-yofs );
 xlabel( sprintf('Fnet - %0.2f', xofs) );
 ylabel( sprintf('\\DeltaL - %0.4f', yofs) );