找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3235|回復(fù): 7
收起左側(cè)

大佬們求解關(guān)于STM32 FFT變換求相位的問題

[復(fù)制鏈接]
ID:926694 發(fā)表于 2021-7-22 23:16 | 顯示全部樓層 |閱讀模式
STM32,使用了FFT變換,我看到網(wǎng)上說輸出的數(shù)組,求虛部比實(shí)部的反正切就是信號的相位,但是得到的明顯不是啊

void GetPowerMag()
{        
    signed short lX,lY;
    float X,Y,Mag;
    unsigned short i;
    for(i=0; i<NPT/2; i++)
    {
        lX  = (OutBufArray[ i] << 16) >> 16;        //虛部
        lY  = (OutBufArray[ i] >> 16);                //實(shí)部
        chucun[ i] = InBufArray[ i];
        imag[ i] = lX;
        real[ i] = lY;
               
        //除以32768再乘65536是為了符合浮點(diǎn)數(shù)計(jì)算規(guī)律
        X = NPT * ((float)lX) / 32768;
        Y = NPT * ((float)lY) / 32768;
        Mag = sqrt(X * X + Y * Y) / NPT;
        if(i == 0)
            MagBufArray[ i] = (unsigned long)(Mag * 32768);
        else
            MagBufArray[ i] = (unsigned long)(Mag * 65536);
    }
}


具體求出來的反正切值用不用再進(jìn)行轉(zhuǎn)換得到相位,還是說我的過程就是錯(cuò)的?
回復(fù)

使用道具 舉報(bào)

ID:955239 發(fā)表于 2021-7-23 14:09 | 顯示全部樓層
你先確定一下你預(yù)想的算法原理和這個(gè)程序是否一樣。單片機(jī)運(yùn)算可能會(huì)對數(shù)據(jù)進(jìn)行處理,以此來優(yōu)化運(yùn)算速度。
回復(fù)

使用道具 舉報(bào)

ID:844772 發(fā)表于 2021-7-23 16:29 | 顯示全部樓層
虛部除以實(shí)部,再求反正切就是相位了,這跟用DFT還是FFT沒關(guān)系,你是不是只是弧度制問題啊?
回復(fù)

使用道具 舉報(bào)

ID:926694 發(fā)表于 2021-7-23 20:40 | 顯示全部樓層
glinfei 發(fā)表于 2021-7-23 16:29
虛部除以實(shí)部,再求反正切就是相位了,這跟用DFT還是FFT沒關(guān)系,你是不是只是弧度制問題啊?

我換了不同相位的信號接入,但是得到的值大部分都是0.785和1.57,其余的有些零星的值,比如1.2...但是換算成弧度都跟相位不對等
回復(fù)

使用道具 舉報(bào)

ID:926694 發(fā)表于 2021-7-23 20:42 | 顯示全部樓層
glinfei 發(fā)表于 2021-7-23 16:29
虛部除以實(shí)部,再求反正切就是相位了,這跟用DFT還是FFT沒關(guān)系,你是不是只是弧度制問題。

您好,您有沒有這方面的例程啊,我這個(gè)是只用了官方的DSP庫,加上我上面的那個(gè)函數(shù),但是求不了多信號合成的頻率
回復(fù)

使用道具 舉報(bào)

ID:926694 發(fā)表于 2021-7-23 21:00 | 顯示全部樓層
ZChaoM 發(fā)表于 2021-7-23 14:09
你先確定一下你預(yù)想的算法原理和這個(gè)程序是否一樣。單片機(jī)運(yùn)算可能會(huì)對數(shù)據(jù)進(jìn)行處理,以此來優(yōu)化運(yùn)算速度。

這個(gè)求頻率求幅值還是挺準(zhǔn)的
回復(fù)

使用道具 舉報(bào)

ID:419909 發(fā)表于 2021-7-23 22:28 | 顯示全部樓層
剛好現(xiàn)在也正在用STM32來用FFT.GetPowerMag()這個(gè)程序沒問題的. MagBufArray[ i] 就是各個(gè)頻率幅值.取前面NPT/2的數(shù)組顯示就行.
如果顯示數(shù)據(jù)有錯(cuò).那應(yīng)該就是你ADC采集那里有問題.
另外.順便說一下我目前遇到的問題.就是FFT的頻率混疊問題.比較麻煩.如果有大神有好的解決方案.方便分享一下.除了硬件電路加濾波外.
回復(fù)

使用道具 舉報(bào)

ID:1090030 發(fā)表于 2023-7-29 20:42 | 顯示全部樓層
我也是這個(gè)問題,請問解決了嗎?
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表