f0=50.1; % 基波频率
fs=1500; % 采样频率
N=512; % 数据长度
n=0:N-1; % 数据索引
rad=pi/180; % 角度和弧度的转换因子
xb=[1,0.02,0.1,0.01,0.05,0,0.02,0,0.01]; % 谐波幅值
Q=[-23,115.6,59.3,52.4,123.8,0,-31.8,0,-63.7]rad; % 谐波初始相位
s=zeros(1,N); % 初始化
M=9; % 谐波个数
for i=1:M % 产生谐波信号
s=s+xb(i)
cos(2pif0in./fs+Q(i));
end

w=0.5-0.5cos(2pi*n./N); % 海宁窗
x=s.*w; % 信号乘以窗函数
v=fft(x,N); % FFT
u=abs(v); % 取频谱的幅值
k1=zeros(1,M); % 初始化
k2=zeros(1,M);
A=zeros(1,M);
ff=zeros(1,M);
Ph=zeros(1,M);
df=fs/N; % 频率分瓣率

for i=1:M % 计算基波和各阶谐波的参数
if i==1 % 若计算基波,在40-60Hz区间中寻找最大峰值
n1=fix(35/df); n2=fix(65/df); % 求出40Hz和60Hz对应的索引号
else % 若计算谐波,从该谐波理论值-10和+10的区间中寻找最大值
n1=fix((iff(1)-15)/df); % 求出区间对应的索引号
n2=fix((i
ff(1)+15)/df);
end
[um,ul]=max(u(n1:n2)); % 在区间中找出最大值
k1(i)=ul+n1-1; % 给出最大值的索引号
% 判断峰值在最大值左边还是右边,如果峰值在最大值左边,把k1(i)进行修正
if u(k1(i)-1)>u(k1(i)+1),
k1(i)=k1(i)-1;
end
k2(i)=k1(i)+1; % 求出k2(i),使峰值永远在k1(i)和k2(i)之间
y1=u(k1(i)); % 求出y1和y2
y2=u(k2(i));
b=y2/y1; % 按式(7-2-5)计算出beta
% 海宁窗的beta对alpha的表示式
a=-0.985782+2.871279b-2.481274b2+1.747132*b3-0.91095b^4+…
0.320022
b5-0.066571*b6+0.0061436b^7;
% 按alpha的数值决定最大值的索引号和gamma值
if y1>=y2 % 若k1是最大值索引
yk=y1;
gama=a;
end
if y1<y2 % 若k2是最大值索引
yk=y2;
gama=-(1-a);
end
% 按式(7-2-9)依海宁窗的窗函数关系计算出谐波的幅值
A(i)=yk
(3.999998+2.580052*(gama)2+0.989796*(gama)4+…
0.352636*(gama)^6)/N;
ff(i)=(k1(i)-1+a)fs/N; % 求出谐波的频率
Ph(i)=phase(v(k1(i)))-pi
a; % 求出谐波的初始相位
Ph(i)=Ph(i)-(Ph(i)>pi)2pi+(Ph(i)<-pi)2pi; % 对相位进行修正
% 若幅值过小设为0,并对频率相位修正
if A(i)<0.0005, A(i)=0; ff(i)=i*ff(1); Ph(i)=0; end
% 显示谐波参数
fprintf(’%4d %5.6f %5.6f %5.6f\n’,i,A(i),ff(i),Ph(i)/rad);
end

单谱线插值FFT的MATAB实现相关推荐

  1. matlab数据整周期截断,凯塞窗四谱线插值FFT的电力谐波分析方法

    论文写作指导:请加QQ229366758 摘 要:针对在采用快速傅里叶变换分析电力谐波时,对信号非同步采样以及非整周期截断的情况下,会产生频谱泄露和栅栏效应,无法有效检测谐波的各参数值等问题,提出了加 ...

  2. 双谱线插值与三谱线插值FFT的MATLAB实现

    双谱线插值 f0=50.1; % 基波频率 fs=1500; % 采样频率 N=512; % 数据长度 n=0:N-1; % 数据索引 rad=pi/180; % 角度和弧度的转换因子 xb=[1,0 ...

  3. matlab中fft插值,在加窗插值FFT分析中,如何用matlab求得双谱线插值的修正...

    下面是我在之前论坛里找到的程序里进行改编的,但还是弄不来,希望懂的人能指导下 f0=50; fs=50*256; N=2048;%2048/256=8 rad=180/pi; n=[0:1:N-1]; ...

  4. 【STM32F407的DSP教程】第27章 FFT的示波器应用

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第27章       FFT的示波器应用 特别声明:本章节内 ...

  5. Vue.js(2.x)之插值

    看了一些友邻写的文章,不少是基于1.0版本的,有些东西在2.x版本应该已经废除了(如属性插值.单次插值在2.x版本上运行根本不执行).对于不理解的东东,找起资料来就更麻烦了.不得不老老实实线下测试并整 ...

  6. python插值计算

    一维插值 常规用法 [参考文章] python实现各种插值法(数值分析) python scipy样条插值函数大全(interpolate里interpld函数) Python:插值interpola ...

  7. 骨骼动画的插值与融合

    花了三天时间搞定了困扰了我半年的事情,心情非常之好. 是这样的.我们的 3d engine 中的骨骼动画的插值融合总有点问题.如果是两个变化比较大的动画想从一个过度到另外一个,效果总是不太对.对于图形 ...

  8. matlab哈宁低通,Matlab实现电网谐波测量加窗插值算法.pdf

    收稿日期 2005 03 16 作者简介 张鸿博 1980 男 河南舞钢人 硕士生 第16卷第2期中原工学院学报Vol 16 No 2 2005年04月JOURNAL OF ZHONG YUAN IN ...

  9. jiedai算法模板合集(正在肝2021.8.15)

    文章目录 基础模板 常用板子 数学题常用板子 输出挂 fread快读 高精度 分数类 打表压缩 基数排序 杂项 数据结构 树状数组 一维树状数组 二维树状数组 线段树 主席树 线段树合并/裂开 吉司机 ...

最新文章

  1. 5行Python提取海量新闻网站内容
  2. python做mysql数据迁移_Python中MySQL数据迁移到MongoDB脚本的方法
  3. MySQL高级 - 常用工具 - mysql
  4. 联发科技嵌入式_英特尔联手联发科技重回移动5G征途,能否与高通抗衡?
  5. CentOS/Linux 卸载MATLAB
  6. linux下制作codeblocks绿色版,并集成devhelp
  7. 未来感十足:小米发布四曲面屏幕专利
  8. python的lambda函数错误的是_Python 中的 AWS Lambda 函数错误 - AWS Lambda
  9. 女生适合学python_Python适合女生学习吗?
  10. springboot中配置过滤器以及可能出现的问题
  11. cannot help doing用法
  12. End Game----OO最后一次博客作业
  13. Python学习之路:socket网络编程
  14. win10默认安装路径修改_问题解答|Win10电脑重启桌面图标就变乱的解决方法!
  15. con和com开头单词规律_con和com的前缀区别。背单词时总是搞不清什么时候是con什么时候是com之后找到了不同之处,c...
  16. Pm2 部署 Nuxt 项目
  17. nextpolish安装_使用nextpolish对三代组装进行polish
  18. 选购笔记本要看清液晶屏幕及主流技术
  19. python pdf删除图片_【原创】python批量删除pdf图片水印(Xobject)的一种方法
  20. 一种万能解锁的解决方法

热门文章

  1. 已知一点经纬度,方位角,距离,求另一点经纬度
  2. 侵害消费者信息安全,国内6家银行收到巨额罚单
  3. ISP主流芯片方案---海思、安霸、TI、NXP、升迈和Nextchip对比
  4. 集线器(Hub)和交换机(Switch)的区别
  5. cpua55和a53哪个好_OPPOA53搭载什么处理器-跑分是多少
  6. cygwin中安装g95
  7. 一个总经理的11个面试问题
  8. 实战:新手开直通车如何进行低价引流
  9. Day02数据类型和变量
  10. 危险!别这样直接运行 Python 命令,否则电脑等于“裸奔”