2

私は 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 の不具合がありますか?

4

3 に答える 3

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)

結果 (右クリック + 「画像を表示」で解像度を向上):

ここに画像の説明を入力

于 2012-10-12T04:02:31.560 に答える
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')); 

ここに画像の説明を入力

実は一行でできるんです!追加するだけです:

   set(gca,'YTick',get(gca,'YTick')','YTickLabel',num2str(get(gca,'YTick')','%.6f'));
于 2012-10-12T04:13:44.147 に答える
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) );
于 2012-10-12T04:02:57.467 に答える