Octave拒绝处理我传递给csvread()的字符串

Octave拒绝处理我传递给csvread()的字符串,octave,Octave,因此,我正在编写一个倍频程脚本(我对该语言相对缺乏经验),并尝试打开两个csv文件,将其名称作为命令行参数传递给脚本。这是我的剧本: #!/usr/bin/env octave function plotregs(fig, regs) figure(fig); title('Foo'); xlabel('Value'); ylabel('Cycle #'); grid on; plot(rows(regs

因此,我正在编写一个倍频程脚本(我对该语言相对缺乏经验),并尝试打开两个csv文件,将其名称作为命令行参数传递给脚本。这是我的剧本:

    #!/usr/bin/env octave

    function plotregs(fig, regs)
      figure(fig);
      title('Foo');
      xlabel('Value');
      ylabel('Cycle #');
      grid on;

      plot(rows(regs(:, 1)), regs(:, 1),
           rows(regs(:, 2)), regs(:, 2),
           rows(regs(:, 3)), regs(:, 3),
           rows(regs(:, 4)), regs(:, 4),
           rows(regs(:, 5)), regs(:, 5),
           rows(regs(:, 6)), regs(:, 6),
           rows(regs(:, 7)), regs(:, 7),
           rows(regs(:, 8)), regs(:, 8));

      legend('A', 'B', 'C', 'D', 'E', 'F', 'H', 'L');
    endfunction  

    args = argv ();
    filename = strcat(cellstr(args(1)));
    typeinfo filename
    regs = csvread(filename);

    graphics_toolkit("gnuplot");

    plotregs(1, regs);

    filename = strcat(cellstr(args(2)));
    regs = csvread(filename);

    plotregs(2, regs);

    pause
下面是我运行脚本时得到的输出:

    ans = sq_string
    error: dlmread: FILE argument must be a string or file id
    error: called from:
    error:   /usr/share/octave/3.4.3/m/io/csvread.m at line 34, column 5
    error:   /home/tnecniv/Code/Octave/regigraph/regigraph.m at line 25, column 6

任何建议都将不胜感激

问题是您创建了一个可执行的八度脚本,该脚本需要参数,但不提供任何参数

首先,我将以

#!/usr/bin/octave -qf
然后可以按如下方式运行脚本:

$ ./myscript.sh datafile1.csv datafile2.csv
但在我看来,argv()的行为有点奇怪,因为当没有为(比如myscript.sh)提供参数时,它返回执行脚本的文件名,但当提供一个或多个参数时,它只包含参数

有关“可执行倍频程程序”,请参阅文档的第2.6节