0

サブプロットの 3x3 プロットを作成していますが、表示用のオプションが必要です。各サブプロットは、1 つの自由度 (膝の屈曲/伸展など) に対するトルクと時間を示していますが、左右を表示するかどうか、被験者の質量で正規化されたトルク、平均かどうかなどのオプションを提供しようとしています。現在、私はこれらのオプションを明示的にコーディングしていますが、左のみ、正規化せず、平均を表示するという選択肢を与えるより良い方法はありますか? うーん

plotRight = 1;
normalizeByMass = 0;
   figure(1);
    for DOF = 1:9
    subplot(3,3,DOF);  
    if normalizeByMass
        if plotRight
            plot(x, torqueRnorm(:,:,DOF), 'r');
            hold on
        end
        if plotLeft
            plot(x, torqueLnorm(:,:,DOF));
            hold on
        end
    else
        if plotRight
            plot(x, torqueR(:,:,DOF), 'r');
            hold on
        end
        if plotLeft
            plot(x, torqueL(:,:,DOF));
            hold on
        end
    end
end
plot(x, torqueRmean(:,DOF), 'k', 'LineWidth', 2);
hold on
plot(x, torqueLmean(:,DOF), 'k', 'LineWidth', 2);
hold on
ylabel('Hip');
title('X');
axis tight;  

次のサブプロットでも同じこと...

ありがとう

4

1 に答える 1

1

あなたのアプローチは正しいです。プロットなどを非表示にするたびに手動で行をコメントアウトするよりも、変数と条件を使用する方がはるかに優れています。

今できることは、すべてを function にラップすることです。そして、パラメータ ( plotLeft, plotRight…) がこの関数の引数になります。このようにして、複雑さを隠し、より大きなものを構築するために心を解放します。

読みやすさを改善するためにできることもいくつかあります。

  1. コードを正しくインデントします。Matlab が役に立ちます: Ctrl-A Ctrl-I(または⌘A ⌘Imac では) ファイル全体のインデントを修正します。

  2. hold on後に一度だけ呼び出すことができますsubplot

  3. 0 と 1 の代わりにブール値にtrueandを使用するfalse

  4. 、、、、、および一般に何も返さない命令の後figureにセミコロンは必要ありませんsubplotplotxlabeltitleaxis

于 2013-07-27T03:33:15.780 に答える