我试图将xlim和ylim的值作为命令行参数传递给我的八度脚本。我真正拥有的是:
arg_list = argv ();
filename = arg_list{1};
minVal = arg_list{2};
maxVal = arg_list{3};
if (minVal >= maxVal)
disp(["min (" minVal ") must be less than max (" maxVal ")"]);
else
%prepare plot
plot(x,y);
xlim([minVal maxVal]);
ylim([minVal maxVal]);
endif
我将脚本称为linux终端,如下所示:
for f in ./AllValues/Acceleration*.csv; do
echo "Processing file: $f";
if echo "$f" | egrep -q "High" ; then
./calc.m $f 0 50;
else
./calc.m $f 0 20;
fi
done
当min值为0时,将忽略xlim和ylim命令并使用自动值。当我尝试设置另一个值时,例如。 ./script.m file.csv 7 20
,测试失败,我得到输出min (7) must be less than max (20)
。
我试图将参数转换为int32:
minVal = int32(arg_list{2});
maxVal = int32(arg_list{3});
但是在尝试设置xlim和ylim时会产生错误,即使min值为0也是如此。
我还尝试用单引号或双引号括起来:
./script.m file.csv '7' '20'
./script.m file.csv "7" "20"
但这并没有改变任何事情。
任何想法我的脚本有什么问题?
答案 0 :(得分:1)
使用str2double
包裹作业:
minVal = str2double (arg_list{2});
maxVal = str2double (arg_list{3});
字符串和数字类型之间没有类型转换,这就是您使用int32
的尝试失败的原因。