我试图在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'并且'执行',其中有一些解决了这个问题。我确定我只是做了一些稍微错误的事情,但谷歌对此几乎没有帮助。
提前致谢。
答案 0 :(得分:0)
正如@Sardar_Usama所说,我试图访问结果数组的元素0,这当然不起作用。
将其更改为n + 1解决了问题。