意図しないグラフがプロットされる→重くなる

11 次查看(过去 30 天)
nobuki kishi
nobuki kishi 2020-1-25
评论: michio 2020-1-25
最近プロットで出力しているグラフが重く,違和感を感じていたのですが,グラフをよく見てみるとコードで書いた覚えのないグラフが出力されていることに気づきました.
少し前までは無かった現象で,全てのfigureに同じグラフが出力されます.
一見,y=0のようなグラフです.
保存したpngファイルを2枚添付します.
次にグラフ出力の際のコードを引用します.
質問:
・このような意図していないグラフが出力されるといった現象は起こりうるのでしょうか.
・原因としてどのようなことが考えられるでしょうか.
動作が重く,また余計なグラフが表示されて困っています.どうかご回答よろしくお願いします.
Faero_drag_n_CLL.png
Faero_drag_n_dif.png
if SET.is_graphout_ana_Lift_dif == 1
h = figure;
plot(0:(ins.data_num-1), ins.Faero_n_drag_dif);
legend('Drag');
ylim([0 1e-5]);
xlabel('Time [s]');
ylabel('Drag Force [N]');
title({'Aerodynamic Drag and Lift Force Norm [N]', ' by Diffuse Model'});
if save_flag == 1
saveas(h, strcat(save_path_tmp, 'png\Faero_drag_n_dif.png'));
saveas(h, strcat(save_path_tmp, 'emf\Faero_drag_n_dif.emf'));
saveas(h, strcat(save_path_tmp, 'fig\Faero_drag_n_dif.fig'));
end
h = figure;
plot(0:(ins.data_num-1), ins.Faero_n_lift_dif);
legend('Lift');
ylim([0 1e-7]);
xlabel('Time [s]');
ylabel('Lift Force [N]');
title({'Aerodynamic Drag and Lift Force Norm [N]', ' by Diffuse Model'});
if save_flag == 1
saveas(h, strcat(save_path_tmp, 'png\Faero_lift_n_7_dif.png'));
saveas(h, strcat(save_path_tmp, 'emf\Faero_lift_n_7_dif.emf'));
saveas(h, strcat(save_path_tmp, 'fig\Faero_lift_n_7_dif.fig'));
end
end

采纳的回答

michio
michio 2020-1-25
奇妙ですね・・私であればグラフ描画関係のコマンド冒頭にブレークポイントを置いて、1行ずつ実行しながら y=0 の線が描かれるタイミングから探ってみます。。

更多回答(1 个)

nobuki kishi
nobuki kishi 2020-1-25
解決しました!
配列の事前割り当てのミスでした.
ブレークポイントを置いてデバッグしたところ,plot関数の箇所で出力されていました.
plot関数に与える2つ目の引数の配列のサイズを調べたところ
想定:4804 1
実際:4804 4804
となっており,zerosでの事前割り当てを本来zeros(4804, 1)とするところをzeros(4804)としてしまっていたことが原因でした.
zeros(n)はn*nの配列を作ることを覚えておくべきでした.
ご回答ありがとうございました.
  1 个评论
michio
michio 2020-1-25
詳細にありがとうございました。原因がわかってよかったです!

请先登录,再进行评论。

产品


版本

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!