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

11 views (last 30 days)
nobuki kishi
nobuki kishi on 25 Jan 2020
Commented: michio on 25 Jan 2020
最近プロットで出力しているグラフが重く,違和感を感じていたのですが,グラフをよく見てみるとコードで書いた覚えのないグラフが出力されていることに気づきました.
少し前までは無かった現象で,全ての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

Accepted Answer

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

More Answers (1)

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

Sign in to comment.

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!