八度脚本:命令行参数为xlim / ylim

时间:2014-04-23 09:14:44

标签: command-line-arguments octave

我试图将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"

但这并没有改变任何事情。

任何想法我的脚本有什么问题?

1 个答案:

答案 0 :(得分:1)

使用str2double包裹作业:

minVal = str2double (arg_list{2});
maxVal = str2double (arg_list{3});

字符串和数字类型之间没有类型转换,这就是您使用int32的尝试失败的原因。