0

我正在创建一个 3x3 的子图,我想要一些显示选项。每个子图都显示了一个自由度(例如膝关节屈曲/伸展)的扭矩与时间的关系,但我试图提供是否显示左右、由受试者质量标准化的扭矩、平均与否等选项。现在我正在明确编码这些选项,但是有没有更好的方法让我选择说:仅左,未标准化,显示平均值?嗯

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

你的方法是正确的。像您一样使用变量和条件比每次要隐藏某些图等时手动注释行要好得多。

现在你能做的就是把所有东西都包装在一个函数中。您的参数 ( plotLeft, plotRight...) 将成为此函数的参数。像这样你隐藏了复杂性,它让你的思想解放出来,去建造更大的东西。

您还可以做一些小事情来提高可读性:

  1. 正确缩进你的代码。Matlab 可以帮助您:(Ctrl-A Ctrl-I⌘A ⌘I在 mac 上)将修复整个文件中的缩进。

  2. hold on之后只能调用一次subplot

  3. 使用truefalse作为布尔值而不是 0 和 1

  4. figure在, subplot, plot, xlabel, title,之后不需要分号axis,通常任何不返回任何内容的指令

于 2013-07-27T03:33:15.780 回答