在MATLAB中更好的方法吗?

时间:2013-07-26 19:55:33

标签: matlab graph plot

我正在创建一个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;  

和下一个子剧情一样......

由于

1 个答案:

答案 0 :(得分:1)

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

现在您可以做的是将所有内容包装在函数中。您的参数(plotLeftplotRight ...)将成为此函数的参数。像这样,你隐藏的复杂性,它可以让你自由地构建更大的东西。

您可以采取一些措施来提高可读性:

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

  2. {li>

    hold on只能在subplot

    之后调用一次
  3. 使用truefalse代替布尔值而不是0和1

  4. figuresubplotplotxlabeltitleaxis后,您不需要分号,一般而言,任何不返回任何指令