我正在尝试以倍频程生成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
我曾尝试将变量声明为“全局”和“持久性”,但这两种方法都解决了这个问题。我确信我只是做错了什么,但谷歌在这方面几乎没有什么帮助。
提前谢谢。
发布于 2016-08-31 11:03:07
正如@Sardar_Usama所说,我试图访问结果数组的元素0,这当然不会起作用。
将其更改为n+1解决了该问题。
https://stackoverflow.com/questions/39247192
复制相似问题