C语言结合gnuplot设计梅尔滤波器组


请读者先阅读 梅尔滤波器组的分析与设计思路基于matlab的梅尔滤波器组的设计

基于FFT点数设计梅尔滤波器组

#include<stdio.h>
#include<math.h>
#define M 24
#define fs 8000
int main()
{
   int fl = 0, fh = fs/2, N = 256;
   double F_mel_fl = 1125*log(1+fl/700.0);
   double F_mel_fh = 1125*log(1+fh/700.0);
   double Mel[24+2], f[24+2], H[256/2+1];
   int n[24+2];
   double df = 1.0*fs/N;	//计算频率分辨率
   int i, m, k;
   for(i=0; i<=M+1; i++)
     Mel[i]=F_mel_fl + 1.0*i*((F_mel_fh-F_mel_fl)/(M+1));	//将F_mel_fl至F_mel_fh的Mel频率范围均分为M+1段,产生M+2个Mel频率值
   for(i=0; i<=M+1; i++)
     f[i] = 700*(exp(Mel[i]/1125.0)-1);	//分别求出这M+2个Mel频率对应的实际频率值
   for(i=0; i<=M+1; i++)
     n[i] = ceil(1.0*f[i]/df); //分别求出这M+2个实际频率值对应的FFT点数
   for(m=1; m<=M; m++)
   {
      for(k=0; k<=N/2+1; k++)
      {
         if(k>=n[m-1] && k<n[m])
           H[k] = 1.0*(k-n[m-1])/(n[m]-n[m-1]);
         else if(k>=n[m] && k<=n[m+1])
           H[k] = 1.0*(n[m+1]-k)/(n[m+1]-n[m]);
         else
           H[k] = 0;
      }
      for(k=0; k<=N/2; k++)
        printf("%f\t%f\n", k*df, H[k]);
    }
 }

在这里插入图片描述

基于频率设计梅尔滤波器组

#include<stdio.h>
#include<math.h>
#define M 24
#define fs 8000
int main()
{
   int fl = 0, fh = fs/2;
   double F_mel_fl = 1125*log(1+fl/700.0);
   double F_mel_fh = 1125*log(1+fh/700.0);
   double Mel[24+2], f[24+2], H[4000+1];
   int i, m, k;
   for(i=0; i<=M+1; i++)
     Mel[i]=F_mel_fl + 1.0*i*((F_mel_fh-F_mel_fl)/(M+1));	//将F_mel_fl至F_mel_fh的Mel频率范围均分为M+1段,产生M+2个Mel频率值
   for(i=0; i<=M+1; i++)
     f[i] = 700*(exp(Mel[i]/1125.0)-1);	//分别求出这M+2个Mel频率对应的实际频率值
   for(m=1; m<=M; m++)
   {
      for(k=0; k<=fh; k++)
      {
         if(k>=f[m-1] && k<f[m])
           H[k] = 1.0*(k-f[m-1])/(f[m]-f[m-1]);
         else if(k>=f[m] && k<=f[m+1])
           H[k] = 1.0*(f[m+1]-k)/(f[m+1]-f[m]);
         else
           H[k] = 0;
      }
      for(k=0; k<=fh; k++)
        printf("%d\t%f\n", k, H[k]);
   }
}

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Visual Studio中使用C语言时,如果出现 "'gnuplot'不是内部或外部命令,也不是可运行的程序或批处理文件" 的错误提示,这通常是因为系统无法找到gnuplot命令。gnuplot是一个用于绘制图形的开源软件,如果你的项目中使用了gnuplot相关的代码或库,那么你需要确保gnuplot已经正确安装并配置。 解决这个问题的方法有以下几种: 1. 确认gnuplot已经正确安装:首先,你需要确保gnuplot已经正确安装在你的系统中。你可以在gnuplot官方网站(https://www.gnuplot.info/)下载并安装最新版本的gnuplot。 2. 配置环境变量:如果gnuplot已经正确安装,但系统仍然无法找到它,可能是因为系统的环境变量没有配置正确。你可以按照以下步骤进行配置: - 打开控制面板,进入系统和安全 -> 系统 -> 高级系统设置。 - 在弹出的窗口中,点击"环境变量"按钮。 - 在"系统变量"部分,找到名为"Path"的变量,并点击"编辑"按钮。 - 在弹出的窗口中,点击"新建"按钮,并输入gnuplot的安装路径(例如:C:\Program Files\gnuplot\bin)。 - 确认所有窗口,保存并关闭。 3. 检查项目配置:如果以上步骤都没有解决问题,你需要检查你的项目配置是否正确。在Visual Studio中,你可以打开项目属性,然后选择"配置属性" -> "调试" -> "环境",确保环境变量中包含gnuplot的安装路径。 希望以上方法能够帮助你解决问题!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值