【问题标题】:MATLAB axes have constant valuesMATLAB 坐标区具有常数值
【发布时间】:2015-02-27 20:24:36
【问题描述】:

我正在做一个项目,它在 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中是否有一些可以以某种方式修复的故障?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    那是因为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)
    

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

    【讨论】:

      【解决方案2】:

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

       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')); 
      

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

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

      【讨论】:

        【解决方案3】:

        好吧,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) );
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-20
          • 2011-09-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-12
          相关资源
          最近更新 更多