我想编写一个脚本,自动执行脚本的特定部分并跳过所有其他部分。 这是我的示例代码:
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
条件的情况下实现这一目标?
编辑:如果有人觉得让我真的很开心,他或她可以添加一个复选框菜单,我可以在其中查看我想要绘制的所有值。
答案 0 :(得分:3)
最简单的可能是使用if
语句。在这里,我使用str2num
将input
的输出转换为数字向量。然后我使用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
,因为它可以用来使您的代码真正易于阅读。
它完成了它在锡上所说的内容!