搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
从前慢现在也慢
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
BLE学习(3) - BLE广播基本概念_ble定向广播
2
推荐开源项目:Notion Zh-CN - 中文本地化版本
3
毕业设计:基于深度学习的垃圾溢出识别算法系统_本科毕设深度学习要有程序
4
Imagen Video & Phenaki:谷歌提出的新AI视频生成技术
5
1Panel 群晖 安装配置 frp 实现内网穿透_群晖安装1panel
6
漫谈软件工程(1)——回顾十年软件开发经历_软件项目近十年成功案例
7
探索新一代存储技术:KV SSD 主机软件包
8
hadoop2.6解决 WARN util.NativeCodeLoader Unable to load native-hadoop library for your platform_warn util.nativecodeloader: unable to load native-
9
C/C++程序的编译过程_c++程序的过程
10
Python爬虫实战+数据分析+数据可视化(豆瓣八佰电影影评)_爬虫+数据分析+数据可视化
当前位置:
article
> 正文
全相位FFT算法matlab的实
作者:从前慢现在也慢 | 2024-08-01 13:27:57
赞
踩
全相位fft
传统FFT利用三角函数的正交性,将信号分离出来,从而将时域的信号变换到频域。但是,它有一个很重要的前提:输入的序列必须是周期内等间隔采样的值,这样,FFT计算的结果才是我们想要的。
实际的情况是,很难做到等间隔采样。比如,交流电的频率是变化的,并不是固定的50Hz。如果采用按照50Hz的信号来采样,则计算结果将无法反映原始信号。
为什么会出现上述的情况呢?因为FFT是将截断的序列做周期延拓而得到无限长的序列的。当不是等间隔采样时,做周期延拓后,在首尾相接的地方,就会出现信号的跳变,与原始信号不一致,自然也就得不到想要的结果,在频谱上的表现就是频谱出现泄露。
传统FFT的结果可以通过一些算法实现频谱校正,如全能重心法、比值法等等。但都是基于FFT的结果,精度有限。
全相位FFT算法是天津大学的王兆华和候正信教授提出的,具有初始相位不变和有效防止频谱泄露的特性,在他的相关书籍上做过严格的证明,并有相应的matlab程序。
我的项目中,需要分析50±0.5Hz工频信号,所以,研究apFFT算法,希望解决非同步采样的频谱校正问题。
apFFT的算法是先对数据进行全相位预处理,然后进行传统的FFT运算。FFT运算大家都熟悉,在这里,我说说全相预处理的过程。
全相位预处理过程如下:
1,构成一个N点的汉宁窗。
2,汉宁窗对自己求卷积,得到2N-1点的卷积窗。
3,求2N-1点的卷积窗的和。
4,将卷积窗的每一项除以卷积窗的和,得到2N-1点的归一化卷积窗。
5,将数据的1:2N-1项和归一化卷积窗相乘,得到加窗的2N-1项。
6,将第1项和N+1项,第2项和N+2项 ... 第N-1项和第2N-1项相加,得到经过全相预处理的N点序列。
接下来就只需要进行FFT,就可以得到apFFT的结果。
如果我们观察结果全相位预处理的信号,由原来的带有跳变的信号变为平滑连续的信号,使得周期延拓后不会出现信号的跳变。
下面是apFFT的matlab程序:
close all;clc;clear all;
N=256;
t=-N+1:2*N-1;
f1=39.8;
f2=51.345;
A1=5;
ph1=30;
s=A1*cos(1*(2*pi*t*f1/N/50-ph1*pi/180));%+A1*cos(1*(2*pi*t*f2/N+ph1*pi/180));
win=hanning(N)';
win1=hanning(N)';
win2=conv(win,win1);
win2=win2/sum(win2);
w=pi*2;
s1=s(1:2*N-1);
y1=s1.*win2;
y1a=y1(N:end) + [0 y1(1:N-1)];
Out1=fft(y1a,N);
a1=abs(Out1);
p1=mod(phase(Out1),2*pi);
s2=s(1+N:3*N-1);
y2=s2.*win2;
y2a=y2(N:end) + [0 y2(1:N-1)];
Out2=fft(y2a,N);
a2=abs(Out2);
p2=mod(phase(Out2),2*pi);
g=mod((p2-p1)/pi/2,1);
h=2*pi*g.*(1-g.*g)./sin(pi*g);
aa1=abs((h.^2).*a2)/2;
rr=round(f1);
disp('频率校正值')
fff=floor(f1)+g(rr+1)
disp('振幅校正值')
aaa=aa1(floor(f1)+1);
disp('初相位校正值')
ppp=p1(rr+1)*180/pi;
通过在VC下编码验证,apFFT具有很高精度的初始相位。采用apFFT/apFFT时移相位差法,可以高精度的修正频率偏差和幅值偏差。这个算法对于非同步采样处理的意义,不言而喻。与传统fft频谱校正的主要区别在于,apFFT的初始相位是准确的,相位差也就是准确的,频率也就可以校正准确,所以具有更高的精度。王教授对各种校正方法做过详细的测试和对比,若希望了解相关内容,可查阅《数字信号全相位谱分析与滤波技术》一书。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/914286
推荐阅读
article
matlab
决策树
多叉树,
决策树
简介...
一、
决策树
决策树
,英文全称是:Decision Tree,其又称为判定树,是一种以树结构形式表达的预测分析模型。
决策树
的...
赞
踩
article
MATLAB
R2022b
安装
教程
(2024年图文保姆级
教程
)
_
matlabr2022b
...
MATLAB
R2022b
安装
教程
(2024年图文保姆级
教程
)
_
matlabr2022b
matlabr2022b
...
赞
踩
article
matlab
绘制
参数方程...
【代码】
matlab
绘制
参数方程。
matlab
绘制
参数方程 ...
赞
踩
article
matlab
的
if
函数
语句
结构
,
Matlab
—
结构
化程式与自定
函数
...
创建并运行第一个 script创建脚本之后,将下面代码复制到编辑器内,然后点击运行或者摁键盘 F5for i = 1 :...
赞
踩
article
MATLAB
R2017a
安装
与
破解
编辑...
转载自。
MATLAB
R2017a
安装
与
破解
编辑 转载自 https:/...
赞
踩
article
Matlab
arrayfun
与
bsxfun
——提高编程效率的利器!_
matlab
中arrayf...
arrayfun
是
Matlab
中的一个强大
函数
,它允许用户对数组中的每个元素应用一个指定的
函数
,并返回一个新的数组...
赞
踩
article
Matlab
中
arrayfun
用法_
arrayfun
函数
matlab
...
http://blog.sina.com.cn/s/blog_7cf4f4460101bnhh.html利用arra...
赞
踩
article
matlab
bsxfun
memory
,[转]
matlab
函数
bsxfun
&
arrayfun
...
bsxfun
:C =
bsxfun
(fun,A,B)
bsxfun
可以对矩阵A和矩阵B进行对应元素的fun
函数
操作。其中,...
赞
踩
article
MATLAB
:
ode45
求解常
微分方程
...
ode45
是
MATLAB
中用于求解非刚性常
微分方程
(ODE)的数值方法。它基于 Runge-Kutta 方法,并具...
赞
踩
article
matlab
ema
向
量化
,
MatLab
向
量化
编程
arrayfun
函数
的使用...
我们知道,MATLAB编程核心思想之一就是向
量化
。MATLAB的很多built-in
函数
,向sin,cos,find等等...
赞
踩
article
matlab
bsxfun
memory
,
matlab
–
BSXFUN
关于关系操作的
内存
效率...
简介&测试设置要执行
内存
测试以查询问题中提出的点
,
让我们定义输入A和B:A = rand(M
,
N)B = rand(1
,
...
赞
踩
article
机器学习必备的
计算机
编程技巧(
matlab
、
python
)和总结——第二弹
!
!
!
_
matlab
ce...
1
、
点击查看协方差矩阵是什么鬼
!
还不懂? 看这详解
!
2
、
_
matlab
ceil
python
matlab
ceil
...
赞
踩
article
matlab
bsxfun
memory
,
matlab
之
bsxfun
函数...
简单的调用方法:
bsxfun
(@plus,A,B),其中@plus代表的是加法,还可以换成减法@minus,乘法@tim...
赞
踩
article
Matlab
bsxfun
函数_
matlab
@
plus
...
bsxfun
两个数组间元素逐个计算.语法:C=
bsxfun
(fun,A,B)函数描述:两个数组间元素逐个计算,fun是函...
赞
踩
article
Matlab
bsxfun
函数解析_
matlab
bxsfun
...
bsxfun
是一个
matlab
自版本R2007a来就提供的一个函数,作用是”applies an element-by-...
赞
踩
article
基于
卡尔曼滤波
的
锂
电池
状态
估计
(包括
锂
电池
模型建立、
参数
辨识与验证、
SOC
估计
采用扩展
卡尔曼滤波
(E...
基于
卡尔曼滤波
的
锂
电池
状态
估计
是一项重要的研究项目,旨在准确
估计
锂
电池
的荷电
状态
(
SOC
)。通过建立
锂
电池
模型、进行
参数
...
赞
踩
article
M
a
tl
a
b
bre
a
k
error_
a
bre
a
k
st
a
tement m
a
y
only
be u...
A BREAK m
a
y
only
be used
within
a
FOR or WHILE
loop
,
a
nd the...
赞
踩
article
数学建模----
MATLAB
----
for
&&
while
循环
(进阶)_
matlab
for
...
for
&&
while
循环
&&
break
&&
continue
&&
经典例题_
matlab
for
matlab
for
...
赞
踩
article
matlab
fit
glm
用法
,
glm
和
LogitModelFit
之间的区别...
你实际上有4组
,
你试图估计3个参数:library(dplyr)df %>% group_by(x1
,
x2) %>% ...
赞
踩
article
[
matlab
]一种
生成
poisson
随机数
的
算法_
matlab
poisson
随机数
...
一种
生成
poisson
随机数
的
算法背景知识——naive monte carlo我们知道,利用naive monte c...
赞
踩
相关标签
matlab 决策树 多叉树
matlab
MatlabR2022b
2022b
Matlab安装
开发语言
matlab的if函数语句结构
数据结构
前端
matlab bsxfun memory
学习
matlab ema 向量化
bsxfun
matlab fitglm用法