好的,你不能为每个下采样数据做 "hps = FFT1.*hps1.*hps2;" ,你有不同的尺寸......

我为你做了一个例子,如何使用5次谐波抽取(下采样)制作一个非常简单的谐波产品频谱(HPS),我只是测试正弦信号,在我的测试中我得到非常接近基频的频率 .

此代码仅显示如何计算算法的主要步骤,很可能您需要改进它!

资源:

%[x,fs] = wavread('ederwander_IN_250Hz.wav');

CorrectFactor = 0.986;

threshold = 0.2;

%F0 start test

f = 250;

fs = 44100;

signal= 0.9*sin(2*pi*f/fs*(0:9999));

x=signal';

framed = x(1:4096);

windowed = framed .* hann(length(framed));

FFT = fft(windowed, 4096);

FFT = FFT(1 : size(FFT,1) / 2);

FFT = abs(FFT);

hps1 = downsample(FFT,1);

hps2 = downsample(FFT,2);

hps3 = downsample(FFT,3);

hps4 = downsample(FFT,4);

hps5 = downsample(FFT,5);

y = [];

for i=1:length(hps5)

Product = hps1(i) * hps2(i) * hps3(i) * hps4(i) * hps5(i);

y(i) = [Product];

end

[m,n]=findpeaks(y, 'SORTSTR', 'descend');

Maximum = n(1);

%try fix octave error

if (y(n(1)) * 0.5) > (y(n(2))) %& ( ( m(2) / m(1) ) > threshold )

Maximum = n(length(n));

end

F0 = ( (Maximum / 4096) * fs ) * CorrectFactor

plot(y)

HPS通常会产生一个错误,显示音高一个八度,我改变了一点代码,见上文:-)

matlab产生谐波的代码,谐波产品频谱的MATLAB代码相关推荐

  1. matlab中方波信号的谐波表示

    matlab中方波信号的谐波表示 一.数学运算 二.matlab代码 t=-7:0.001:7; %x(t)中t取值范围为[-7,7] T1=1; T=4; w=2*pi/T; a0=2*T1/T; ...

  2. 如何用matlab测a相相电流,基于MATLAB的瞬时无功理论谐波检测算法仿真研究

    O 引言 随着电网谐波治理技术的发展,有源滤波(APF)成为治理谐波的有效手段.APF准确及时补偿谐波的关键是必须通过某种检测方法快速.准确地获得负载电流谐波信号,进而产生补偿信号以抵消电源中的谐波, ...

  3. 并联型APF/有源电力滤波器/Matlab/Simulink仿真 *dq/FBD谐波/无功检测

    并联型APF/有源电力滤波器/Matlab/Simulink仿真 *dq/FBD谐波/无功检测 *两相旋转坐标系(dq).两相静止坐标系(αβ)下的PI控制 *SVPWM调制方式 (含仿真介绍文档,不 ...

  4. 并联型APF/有源电力滤波器/Matlab/Simulink仿真 dq/FBD谐波/无功检测

    并联型APF/有源电力滤波器/Matlab/Simulink仿真 *dq/FBD谐波/无功检测 *两相旋转坐标系(dq).两相静止坐标系(αβ)下的PI控制 *SVPWM调制方式 (含仿真介绍文档) ...

  5. 100A有源电力滤波器(APF)MATLAB仿真,两种谐波补偿模式:全阶补偿和选阶补偿

    100A有源电力滤波器(APF)MATLAB仿真,两种谐波补偿模式:全阶补偿和选阶补偿,matlab版本V2011,基于LCL滤波器的I型三电平拓扑仿真模型,三相四线制,软件锁相环,C语言编程提取谐波 ...

  6. matlab三相电源含谐波,谐波电能计量算法的研究及MATLAB仿真-毕业论文(设计).doc...

    毕业设计(论文) 题 目: 谐波电能计量算法的研究及MATLAB 仿真 学 院: 机电工程学院 专 业: 电子信息工程 班 级: 电信 学 号: 姓 名: 指导教师: 教 务 处 制 2011 年 5 ...

  7. matlab谐波仿真,基于MATLAB的瞬时无功理论谐波检测算法仿真研究

    摘要:本文介绍了一种根据电流平均法代替传统滤波器的方法,给出了simulink环境下对应的仿真模型,并对其仿真,结果发现该方法比传统滤波器有较快的动态响应. 关键词:瞬时无功功率:谐波检测:电流平均值 ...

  8. Matlab 制作《最炫民族风》弱爆了,附代码

    Matlab 制作<最炫民族风>弱爆了,附代码 分类: matlab2012-05-22 22:12 1212人阅读 评论(0) 收藏 举报 matlabreference [plain] ...

  9. FFT快速傅里叶变换的应用——画单边频谱图matlab

    FFT快速傅里叶变换的应用--画单边频谱图matlab 快速傅里叶变换在数字信号处理里用的十分广泛,在matlab仿真中,处理信号的时频域变换十分有效,这里结合两个做过的仿真,来说一说fft的应用:画 ...

最新文章

  1. LeetCode实战:最大子序和
  2. EPR | 制药业的AI:利用宝贵的资源
  3. HDU-4454 Stealing a Cake 三分枚举
  4. Java必须了解的“递归”与“IO流”!!!
  5. QT学习笔记(-): 利用QHttp进行http下载(1)
  6. Dubbo负载均衡配置
  7. 小程序分享朋友圈_改造小程序,增加分享朋友圈代码
  8. bzoj 4195: [Noi2015]程序自动分析
  9. ERROR:transport error 202: gethostbyname: unknown host
  10. 数据治理与元模型_开放项目的治理模型如何演变
  11. web.xml文件书写规则
  12. java ee 程序_第一个 JavaEE 应用程序 - JavaWeb 入门开发教程
  13. lambda函数if_Python中lambda的使用,与它的三个好基友介绍
  14. 检查pandas是否存在一列或者多列
  15. 测试linux内核工具,多种测试linux内核的方法
  16. Android系统源码目录解析
  17. 马哥 linux 活动,马哥linux | Linux系统性能和使用活动监控工具 sysstat
  18. C++ Boost库:互斥量 mutex
  19. 什么叫诚实_诚实是人类最珍爱的美德之一,但是什么是诚实?
  20. 五、Ceph之RBD存储使用

热门文章

  1. 安卓dj专业打碟机软件_让专业DJ在手机上打碟,一加7 Pro做到了
  2. 【PDF文档压缩】文档压缩,保留文字信息,压缩页码与文件大小
  3. vulfocus——discuz命令执行(wooyun-2010-080723)
  4. 北京大气污染PM2.5预测(LSTM)
  5. 机器学习(二十)无监督学习-K-means算法
  6. 图式详解复制带随机指针的链表
  7. 基于微信小程序的宿舍楼洗衣机预约使用管理系统#毕业设计
  8. SQL查询/删除重复记录
  9. Http状态码200,300,404,500等是什么意思
  10. 线束展开3d线束展平2d