我目前正在matlab中对某些信号进行频谱分析,应该使用汉明窗函数(https://www.mathworks.com/help/signal/ref/hamming.html)来对同一信号进行进一步分析,但是我遇到了一些不正常的问题,但我得到了错误的结果当我使用内置函数hamming(L)并以与MATLAB中定义的相同的方式自行编写函数时,得到正确的结果。这是代码:
RelaxedDataBinder
这是我自己编写函数时得到的图的图像: Proper Windowed Function 这是我使用内置函数时得到的: Nonsense Function
结论是,在倍增信号时,我对这种工作方式不了解。您能帮助我理解为什么以及如何修改该功能以使其正常工作吗?
答案 0 :(得分:6)
问题是window1
返回的hamming
是Nx1
向量,而x
是1xN
向量。当您对它们执行逐元素乘法时,它将产生一个N*N
矩阵。请参见下面的示例。如果您对window1
或x
进行整形,以使其形状匹配(例如y1 = x.*window1';
),则会得到所需的结果
>> a = [1 2 3]
a =
1 2 3
>> b = [1; 2; 3]
b =
1
2
3
>> a.*b
ans =
1 2 3
2 4 6
3 6 9