双谱线插值
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 % 若计算基波,在35-65Hz区间中寻找最大峰值
n1=fix(35/df); n2=fix(65/df); % 求出35Hz和65Hz对应的索引号
else % 若计算谐波,从该谐波理论值-15和+15的区间中寻找最大值
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)/(y2+y1); % 按式(7-2-5)计算出beta
% 海宁窗的beta对alpha的表示式
a=1.5b;
ff(i)=(k1(i)-1+a+0.5)
fs/N; % 求出谐波的频率
% 按式(7-2-9)依海宁窗的窗函数关系计算出谐波的幅值
A(i)=(y1+y2)(2.35619403+1.15543682a2+0.32607873*a4+…
0.07891461a^6)/N;
if y1>=y2
Ph(i)=phase(v(k1(i)))+pi/2-pi
(a+0.5); % 求出谐波的初始相位
Ph(i)=Ph(i)-(Ph(i)>pi)2pi+(Ph(i)<-pi)2pi; % 对相位进行修正
end
if y1<y2
Ph(i)=phase(v(k1(i)))+pi/2-pi*(a-0.5); % 求出谐波的初始相位
Ph(i)=Ph(i)-(Ph(i)>pi)2pi+(Ph(i)<-pi)2pi; % 对相位进行修正
end
% 若幅值过小设为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

三谱线插值程序:
clc
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 % 若计算基波,在35-65Hz区间中寻找最大峰值
n1=fix(35/df); n2=fix(65/df); % 求出35Hz和65Hz对应的索引号
else % 若计算谐波,从该谐波理论值-15和+15的区间中寻找最大值
n1=fix((iff(1)-15)/df); % 求出区间对应的索引号
n2=fix((i
ff(1)+15)/df);
end
[um,ul]=max(u(n1:n2)); % 在区间中找出最大值
k2(i)=ul+n1-1; % 给出最大值的索引号
k1(i)=k2(i)-1;
k3(i)=k2(i)+1;
y1=u(k1(i)); % 求出y1和y2,y3
y2=u(k2(i));
y3=u(k3(i));
b=(y3-y1)/y2; % 按式(7-2-5)计算出beta
% 海宁窗的beta对alpha的表示式
a=0.66666287b-0.07398320b3+0.01587358*b5-0.00311639b^7 ;
ff(i)=(k2(i)-1+a)
fs/N; % 求出谐波的频率
% 按式(7-2-9)依海宁窗的窗函数关系计算出谐波的幅值
A(i)=(y1+2y2+y3)(1.33333327+0.52658791a2+0.11699742*a4+…
0.02103885
a^6)/N;
Ph(i)=phase(v(k2(i)))+pi/2-api; % 求出谐波的初始相位
Ph(i)=Ph(i)-(Ph(i)>pi)
2pi+(Ph(i)<-pi)2pi; % 对相位进行修正
% 若幅值过小设为0,并对频率相位修正
if A(i)<0.0005, A(i)=0; ff(i)=iff(1); Ph(i)=0;
end
% 显示谐波参数
fprintf(’%4d %5.6f %5.6f %5.6f\n’,i,A(i),ff(i),Ph(i)/rad)
end

双谱线插值与三谱线插值FFT的MATLAB实现相关推荐

  1. 图形图像处理-之-高质量的快速的图像缩放 中篇 二次线性插值和三次卷积插值

    from:http://blog.csdn.net/housisong/article/details/1452249 图形图像处理-之-高质量的快速的图像缩放 中篇 二次线性插值和三次卷积插值    ...

  2. MATLAB一维插值和二维插值

    插值问题描述:已知一个函数上的若干点,但函数具体表达式未知,现在要利用已知的若干点求在其他点处的函数值,这个过程就是插值的过程. 1.一维插值 一维插值就是给出y=f(x)上的点(x1,y1),(x2 ...

  3. python数学建模(三)插值常用库和模块

    文章目录 (一)本文数据资料下载 (二)简单介绍一下定义 (三)介绍我们可能用到的模块和代码(重点) 3.1 scipy.interpolate 模块 3.1.1 一维插值函数 (interp1d) ...

  4. iDesktop点数据集构建DEM时三种插值方式的选择

    转自:https://blog.csdn.net/supermapsupport/article/details/76252498 点数据构建DEM的时候,可以选择三种插值方式,分别是不规则三角网法, ...

  5. 数学建模准备 插值(拉格朗日多项式插值,牛顿多项式插值,分段线性插值,分段三次样条插值,分段三次Hermite插值)

    文章目录 摘要(必看) 0 基础概念 什么是插值 插值用途 什么是拟合 插值和拟合的相同点 插值和拟合的不同点 1 常用的基本插值方法 1.1 多项式插值法 1.1.1 拉格朗日多项式插值法 多项式插 ...

  6. 基于神经网络多项式插值的图像超分辨重构研究-附Matlab代码

    ⭕⭕ 目 录 ⭕⭕ ✳️ 一.引言 ✳️ 二.基于单帧图像的超分辨率重构技术 ✳️ 2.1 最近邻域插值法 ✳️ 2.2 双线性插值法 ✳️ 2.3 双三次插值法(Keys'插值) ✳️ 三.神经网络 ...

  7. 图像处理中的“内插”是什么?插值、图像内插值、图像间插值、重取样(用已知数据来估计未知位置的数值的处理)(最近邻内插法、双线性内插)

    图像插值是在基于模型框架下,从低分辨率图像生成高分辨率图像的过程,用以恢复图像中所丢失的信息.图象插值方法有:最近邻插值,双线性插值,双平方插值,双立方插值以及其他高阶方法. 在很多情况下,人们需要对 ...

  8. 插值与拟合 (一) : 拉格朗日多项式插值 、Newton插值 、分段线性插值、Hermite插值 、样条插值、 B 样条函数插值、二维插值

    插值:求过已知有限个数据点的近似函数. 拟合:已知有限个数据点,求近似函数,不要求过已知数据点,只要求在某种意义下它在这些点上的总偏差最小. 插值和拟合都是要根据一组数据构造一个函数作为近似,由于近似 ...

  9. 一元函数的插值c语言,一元函数插值-Read.doc

    一元函数插值 目标: 对比插值和数据拟合的思想 一元函数插值(线性插值和抛物线插值)及程序实现 基本理论 插值:采集到的数据可以看作是精确数据,要求函数或曲线通过这些数据点. 常用插值方法:一元函数插 ...

最新文章

  1. 媲美Pandas?一文入门Python的Datatable操作
  2. 脚本检测到文件特定词后做下一步动作 down restart
  3. 【ArcGIS Pro微课1000例】0003:ArcGIS pro 2.5加载OSGB点云模型案例教程
  4. Oracle数据库碎片分析,oracle数据库碎片概念与分析
  5. 论文Mathtype公式自动编号
  6. Matlab Tricks(十三)—— 提取矩阵的对角线元素
  7. Nginx二级域名及多Server反向代理配置
  8. Windows 系统(包含Server) 官方镜像下载--阿里云盘
  9. jflash烧录教程_3.烧录方式及烧录软件的使用
  10. PHP字符串函数ucfirst( 将字符串的首字母转换为大写)
  11. 神仙打架!传言阿里 P10 赵海平被 P11 多隆判定 3.25 离职,如何评价阿里 P10 赵海平对王垠的面试?...
  12. 关于电脑开机自检声音的检测
  13. linux dhcpv6有状态配置,翻译:IPv6地址自动配置:有状态和无状态的区别
  14. Rust vs. Go:为什么他们在一起更好
  15. cst和ansys_CST、HFSS、ADS几款电磁仿真软件区别对比
  16. re学习笔记(25)BUUCTF-re-[2019红帽杯]easyRE
  17. php网络编程socket通讯
  18. 关于开发语言个人随想
  19. XML(1)——shema约束之命名空间
  20. 都是自动挡,AT/CVT/AMT双离合究竟谁最强?

热门文章

  1. MySQL几种编码格式的区别(utf8、utf8mb4、utf8mb4_general_ci、utf8mb4_unicode_ci 、utf8mb4_0900_ai_ci)
  2. python微服务监控_基于网络抓包实现kubernetes中微服务的应用级监控
  3. excel返回季度的公式
  4. 《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:03 理解句子的结构
  5. 使用fiddler实现手机抓包--关于苹果装了证书 不能上网的解决办法
  6. visualize python_GitHub - laishenggx/PUP-visualize: Python3可视化雷达PUP数据产品(CINRAD-PUP)...
  7. 【BW16 应用篇】安信可BW16模组/开发板AT指令实现MQTT通讯
  8. 手机端战争迷雾的实现
  9. Python 二级考试选择题80道
  10. 在 Linux 中强制卸载的 3 种方法显示“设备正忙”