cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 2492|回复: 7

急切求助:怎么得到信号的基频

[复制链接]
发表于 2008-11-10 22:03:20 | 显示全部楼层 |阅读模式
如题,怎样计算出信号的主频,只知道好像是先做自功率变换,再求基频,但具体方法不清楚,那位知道的高手指点一下,版主出来救命啊,急死人了哦,呵呵,先谢谢了啊

[ 本帖最后由 netcreature 于 2008-11-11 08:44 编辑 ]
发表于 2008-11-11 08:40:46 | 显示全部楼层
频域分析除了进行功率谱分析外,最主要的还是快速傅立叶变换——即FFT。
AnalysisLibErrType FFT (double arrayXReal[], double arrayXImg[], int numberOfElements);
发表于 2008-11-11 08:48:37 | 显示全部楼层
对了!你是要提取信号的基频信号,还是要求取基频信号的频率值?两者的具体算法会有差别的!
 楼主| 发表于 2008-11-11 20:31:38 | 显示全部楼层
要求基频信号的频率值,具体怎么求啊,谢谢版主
发表于 2008-11-12 09:13:59 | 显示全部楼层
double* wave;          //输入信号、输出信号(FFT变换后)波形的实部数组;
double samples;      //样本数;
double* mag;           //信号的极坐标幅值数组;
double* img;            //输入信号、输出信号(FFT变换后)波形的虚部数组;
double* phase;       //信号的极坐标相位数组;

wave=malloc(samples*sizeof(double));
//为wave数组赋值(自己添加相应代码)

mag=malloc(samples*sizeof(double));
img=malloc(samples*sizeof(double));
phase=malloc(samples*sizeof(double));

FFT(wave,img,samples);       //进行FFT变换;

ToPolar1D(wave,img,samples,mag,phase);       //转换为极坐标方式;

PlotY(panelhandle,graphcontrolID,mag,samples,VAL_DOUBLE,.....);       //绘制FFT变换波形;

free(phase);
free(img);
free(mag);
free(wave);

如果需要求取信号的精确频率值,可以使用PeakDetector()函数求解:
函数原型:
AnalysisLibErrType PeakDetector (double inputArray[], int size, double threshold, int width, int polarity, int initialize, int endOfData, int *count, double **locations, double **amplitudes, double **secondDerivatives);
 楼主| 发表于 2008-11-14 12:29:51 | 显示全部楼层
环境激励下模态参数识别最常用的方法为功率谱峰值法PP( Peak Picking)。功率谱密度是用离散的傅里叶变换将实测的加速度数据转换到频域后直接求得。拾取功率谱密度图(PSD)上的峰值,频率即可简单确定。
由弦理论公式可知,当索力一定时,高阶频率是基频的整数倍,表现在功率谱上则是谱上会出现一系列等间距的峰值,峰值的间距就是基频。拾取这一系列峰值,求相邻峰值的间距并做平均,作为所求基频。
是这样的,版主再帮我看看吧,非常感谢
发表于 2008-11-14 15:35:23 | 显示全部楼层
功率谱的计算我记得上次已经和你说过了。在信号中混有太多噪声时,功率谱的波形不连续(或讲不光滑),一般用来做定性分析。
用FFT变换一样能达到目的,PeakDetector()就是用于波形的峰值(当然,你也可以将它用于功率谱上)。
发表于 2008-11-14 15:39:23 | 显示全部楼层
另外,作信号分析时,你也可以利用MATLAB的信号处理工具箱,它的分析手段比CVI的更强,除了一般的功率谱分析外,MATLAB中还可以进行倒谱分析、最大熵谱分析等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2025-4-20 12:48 , Processed in 0.784506 second(s), 7 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表