为什么我自己使用相同的表达式定义函数时,MATLAB内置函数的结果与我得到的结果不同?

时间:2018-11-28 19:24:29

标签: matlab matlab-figure built-in

我目前正在matlab中对某些信号进行频谱分析,应该使用汉明窗函数(https://www.mathworks.com/help/signal/ref/hamming.html)来对同一信号进行进一步分析,但是我遇到了一些不正常的问题,但我得到了错误的结果当我使用内置函数hamming(L)并以与MATLAB中定义的相同的方式自行编写函数时,得到正确的结果。这是代码:

RelaxedDataBinder

这是我自己编写函数时得到的图的图像: Proper Windowed Function 这是我使用内置函数时得到的: Nonsense Function

结论是,在倍增信号时,我对这种工作方式不了解。您能帮助我理解为什么以及如何修改该功能以使其正常工作吗?

1 个答案:

答案 0 :(得分:6)

问题是window1返回的hammingNx1向量,而x1xN向量。当您对它们执行逐元素乘法时,它将产生一个N*N矩阵。请参见下面的示例。如果您对window1x进行整形,以使其形状匹配(例如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