如何仅自动执行特定部分?

时间:2015-09-25 15:13:33

标签: matlab sections

我想编写一个脚本,自动执行脚本的特定部分并跳过所有其他部分。 这是我的示例代码:

clear all; close all; clc;

to_plot=input('Which values do you want to plot: ','s');
x=linspace(0,100);

%% SECTION 1
y1=x;
figure('Position', [100, 100, 1024, 768]);
plot(x,y1);

print( gcf, '-dpng', 'y1.png');

%% SECTION 2
y2=x.^2
figure('Position',[100, 100, 1024, 768]);
plot(x,y2);

print( gcf, '-dpng','y2.png');

%% SECTION 3
y3=x.^3
figure('Position',[100, 100, 1024, 768]);
plot(x,y3);

print( gcf, '-dpng','y3.png');

现在我希望能够像to_plot=y1,y3那样进行输入,脚本会自动执行第1和第3部分,只是跳过第2部分和所有(可能的)其他部分。有没有人知道如何在不向每个部分添加if条件的情况下实现这一目标? 编辑:如果有人觉得让我真的很开心,他或她可以添加一个复选框菜单,我可以在其中查看我想要绘制的所有值。

1 个答案:

答案 0 :(得分:3)

最简单的可能是使用if语句。在这里,我使用str2numinput的输出转换为数字向量。然后我使用any检查我们想要的值是否包含在str2num的返回向量中。

plotting = str2num(input('Which values do you want to plot? ', 's'));

if (any(plotting == 1))
    fprintf(1, 'Plot y1\n');
end

if (any(plotting == 2))
    fprintf(1, 'Plot y2\n');
end

if (any(plotting == 3))
    fprintf(1, 'Plot y3\n');
end

以上的示例输出将是

>> plotting_fun
Which values do you want to plot? 1 3
Plot y1
Plot y3

>> plotting_fun
Which values do you want to plot? 1,3
Plot y1
Plot y3

作为旁注,我喜欢any,因为它可以用来使您的代码真正易于阅读。

  

它完成了它在锡上所说的内容!