八度变量定义错误

时间:2016-08-31 10:31:53

标签: function octave

我试图在Octave中生成Blackman-Harris窗口系数。我在.m文件中声明了一个函数,如下所示:

function result = BlackmanHarris(window_size)
  a0 = 0.35875
  a1 = 0.48829
  a2 = 0.14128
  a3 = 0.01168
  result = [0:window_size - 1];

  if(nargin != 1)
    print_usage("BlackmanHarris(int window_size)");
  endif

  if(isinteger(window_size))
    for n = 0:window_size - 1
      result(n) = a0 - (a1 * cos((2 * pi * n)/(window_size - 1))) + (a2 * cos((4 * pi * n)/(window_size - 1))) - (a3 * cos((6 * pi * n)/(window_size - 1)));
    endfor
  else
    error("BlackmanHarris: Expecting integer argument.");
  endif
endfunction

当我尝试运行时,我收到错误:

>> window = BlackmanHarris(window_size);
error: 'a0' undefined near line 15 column 16
error: called from
    BlackmanHarris at line 15 column 14

我尝试将变量声明为' global'并且'执行',其中有一些解决了这个问题。我确定我只是做了一些稍微错误的事情,但谷歌对此几乎没有帮助。

提前致谢。

1 个答案:

答案 0 :(得分:0)

正如@Sardar_Usama所说,我试图访问结果数组的元素0,这当然不起作用。

将其更改为n + 1解决了问题。