我 使用FR5994分析信号,信号由两个信号组成:
1、单个,频率200Hz,振幅0.6
2、信号,频率为2100Hz,振幅0.15
FS = 8192Hz,在N = 256点后实际FFT,结果如上图所示。
那么 上面的数字代表什么呢? 例如,[137305] 是什么意思?
也就是说,如何从 图中获得信号的频率-振幅?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我 使用FR5994分析信号,信号由两个信号组成:
1、单个,频率200Hz,振幅0.6
2、信号,频率为2100Hz,振幅0.15
FS = 8192Hz,在N = 256点后实际FFT,结果如上图所示。
那么 上面的数字代表什么呢? 例如,[137305] 是什么意思?
也就是说,如何从 图中获得信号的频率-振幅?
包括"MSP4S.h"
#include <mathing.h>
#include <stdint.h>
#include <stdbool.h>
#include "DSPLIB.h"
/*输入信号参数*/
#定义FS 8192
#定义样本256
#define signal_FREQUENCY1200
#define signal_Amplitude1 0.6
#define signal_FREQUENCY22100
#define SIGNAL_AMPLITUDE2 0.15
/* Hamming Window参数*/
#define hamming_alpha 0.5.3836万
#define hamming_beta 0.4.6164万
/*常量*/
#Define PI 3.1415926536
/*生成的Hamming Window函数*/
DSPLIB_DATA (窗口,4)
_Q15窗口[示例];
/*输入信号和FFT结果*/
DSPLIB_DATA (INPUT,MSP_ALIGIN_FFT_Q15 (样本))
_Q15输入[样本];
/*用于处理的临时数据数组*/
DSPLIB_DATA (临时,4)
_Q15 temp[3*samples/2];
/*基准周期计数*/
挥发性UINT32_t细胞计数;
/*函数原型*/
extern void initSigne(void);
extern void initHamming(void);
Void主(void)
{
MSP_STATUS状态;
mspump_q15_params mpyParams;
MSP_FFT_Q15_params fftParams;
/*禁用WDT */
WDTCTL = WDTPW + WDTHOLD;
/*初始化输入信号和Hamming窗口*/
initSignal();
initHamming();
/*将输入信号乘以生成的Hamming窗口*/
mpyParams.length =样本;
状态= MSP_Pumped_Q15 (&mpyParams,输入,窗口,输入);
MSP_checkStatus (状态);
/*初始化FFT参数结构。 */
fftParams.length =样本;
fftParams.bitReverse =真;
fftParams.twiddleTable = MSP_cmplx_twidle_table_256_Q15;
/*执行固定缩放的实际FFT */
msm_benchmarkStart(MSP_benchmark_base, 16);
状态= MSP_FFT_FIXED_Q15 (&fftParams,输入);
cycleCount = MSP_benchmarkStop(MSP_benchmark_base);
MSP_checkStatus (状态);
/*程序结束。 */
__no_operation();
}
void initSigne(void)
{
MSP_STATUS状态;
msp_add_q15_params addParams;
msp_sinusoid Q15_params sinParams;
/*生成Q15输入信号1*/
sinParams.length =样本;
sinParams.振 幅=_Q15 (signal_Amplitude1);
sinParams.cosOmega =_Q15(cosf(2*PI*SIGNAL_FREQUENCY1/FS));
sinParams.sinOmega =_Q15(sinf (2*PI*SIGNAL_FREQUENCY1/FS));
状态= MSP_sinusoid Q15 (&sinParams,输入);
MSP_checkStatus (状态);
/*生成Q15输入信号2到临时数组*/
sinParams.length =样本;
sinParams.振 幅=_Q15 (SIGNAL_AMPLIMUDE2);
sinParams.cosOmega =_Q15(cosf(2*PI*SIGNAL_FREQUENCY2/FS));
sinParams.sinOmega =_Q15(sinf (2*PI*SIGNAL_FREQUENCY2/FS));
状态= MSP_sinusoid Q15 (&sinParams,temp);
MSP_checkStatus (状态);
/*添加输入信号*/
addParams.length =样本;
状态= MSP_ADD_Q15(&addParams, input, temp, input);
MSP_checkStatus (状态);
}
void initHamming(void)(无效)
{
MSP_STATUS状态;
msp_sub_q15_params子参数;
msp_copy_q15_params copyParams;
msp_fill Q15_params filParams;
msp_sinusoid Q15_params sinParams;
/*为余弦函数生成正弦曲线*/
sinParams.length =3*samples/2;
sinParams.振 幅=_Q15 (hamming_beta);
sinParams.cosOmega =_Q15(cosf(2*pi/(samples-1));
sinParams.sinOmega =_Q15 (sinf (2*pi/(samples-1)));
状态= MSP_sinusoid Q15 (&sinParams,temp);
MSP_checkStatus (状态);
/*通过PI/2移动正弦曲线以创建余弦函数*/
copyParams.length =样本;
状态= MSP_COPY_Q15 (©Params,&temp[samples/4],&temp[0]);
MSP_checkStatus (状态);
/*使用alpha常量*/填充临时数组
FillParams.length =样本;
FillParams.value =_Q15 (haming_alpha);
状态= MSP_Fill _Q15 (&filParams,窗口);
MSP_checkStatus (状态);
/*从alpha常量减去生成的余弦以生成最终窗口*/
SubParams.length =样本;
状态= msp_sub_q15 (&subParams,Window,temp,Window);
MSP_checkStatus (状态);
}
执行FFT,后,图中的结果是 输入指针指向的数组。
状态= MSP_FFT_FIXED_Q15 (&fftParams,输入);
Kissn Liu 说:执行FFT后,该图的结果是 输入指针指向的数组。[/QUOT]
发布的代码似乎是MSP DSP库 transform_ex1_FFT_fixed_q15.c 示例。
以下对示例的描述是否有助于回答您的问题?
此示例演示如何使用MSP_FFT_FIXED_Q15 API,使用具有固定缩放功能的Q15快速傅立叶变换(FFT)将实际输入数据数组转换为频率域。 REAL FFT函数与运行虚分量设置为零的复杂FFT相同。 实际FFT的结果是具有一半样本但字节长度相同的复杂向量。[/QUOT]