這個問題主要與這個答案有關:Here如果@Paul R有機會看它,那麼這將是理想的。計算STFT的赫茲
我有一個信號,我已經計算了STFT。 NFFT的大小爲256,重疊爲128.這產生了包含輸出的21個獨立塊。
因此,我想將其轉換爲赫茲,以查看信號中這些點的每個不同的赫茲。我已經用下面的公式計算幅度:
sqrt(output[i][j].re * output[i][j].re + output[i][j].im * output[i][j].im)
這將產生以下:
我主要混淆如何在接下來的部分作品。例如,我基本上有一個2D矢量,其中包含來自STFT的所有塊(每個塊的大小均爲256)。因此,我是否要計算塊內每個點的幅值,計算幅值的最大值,然後使用公式freq = i_max * Fs/N
?
如果是這樣,它看起來像以下的(一個例子,而不是實際數據):
D0 = {0.23 + 1.58,
1.05 + 0.56,
0.58 + 1.38,
.....,
0.58 + 87.6}
= mag[0] = sqrt(0.23 * 0.23 + 1.58 * 1.58),
....
....
這將繼而產生量值的向量對於每個STFT輸出的。從那裏,我可以計算出這是最高的(假設7),然後我可以計算如下:
freq = 7 * 44100/4
其中44100 =採樣率和STFT塊4 =大小。
這會給我每個塊的頻率。
這是正確的,還是,我完全錯過了這一點?
嗨,事情是。對於STFT,我將使用譜圖,這似乎已經發現了幅度。 '10 * log10(sqrt(re * re + im * im)'所以我只需要計算這些箱的最高數,然後計算htz?例如,可以使用頻譜圖的結果/ – Phorce
I從來沒有使用光譜圖來計算它,我總是使用magnetude方程** sqrt(re * re + im * im)**,這是正確的方法,現在您需要的只是從上半部分獲取最大值結果... – ederwander
謝謝你的工作!只是不使用光譜圖來計算?得到它了 :)!我很可能會看到從塊的htz變化?即如果一個塊比另一個塊低,我認爲頻率反而會增加? – Phorce