急求!!编译阶段出现下面错误expression must have(pointer-to-)funct

2019-08-05 15:51发布

RT,代码及错误如下,实在是找不出是什么错误,请各位大神帮忙看看,先谢谢大家了!
代码中蓝 {MOD}字体对应的分别是line26,line27,line28和line29
"mfcc.c", line 26: error: expression must have (pointer-to-) function type
"mfcc.c", line 26: error: expression must have (pointer-to-) function type
"mfcc.c", line 27: error: expression must have (pointer-to-) function type
"mfcc.c", line 27: error: expression must have (pointer-to-) function type
"mfcc.c", line 27: error: expression must have (pointer-to-) function type
"mfcc.c", line 28: error: expression must have (pointer-to-) function type
"mfcc.c", line 28: error: expression must have (pointer-to-) function type
"mfcc.c", line 29: error: expression must have (pointer-to-) function type
"mfcc.c", line 29: error: expression must have (pointer-to-) function type
"mfcc.c", line 29: error: expression must have (pointer-to-) function type

#include"math.h"
#include"constants.h"
void mfcc(double mfcc[][N],double S[][N],int frmN)          //S is the enframed matrix  (frmlen*frmN)
{
  int i,j,k;
  double f[M+2];
  double W[frmlen][M];
  double temp[N][frmlen];
  double cof[N][M];
  double sum=0;
  double melf,x1;

  melf=2595*log10(1+fs/700);

  for(i=0;i<M+2;i++)
  {
    f=700*pow(10,(melf*i/(2595*(M+1))-1));
  }
  for(i=0;i<M;i++)
  {
    for(j=0;j<frmlen;j++)
        {
          x1=j*fs/frmlen;
          if((x1 >= f(i)) && (x1 <= f(i+1)))
            W[j]=(x1-f(i))/(f(i+1)-f(i));
          else if((x1 >= f(i+1)) && (x1 <= f(i+2)))
            W[j]=(f(i+2)-x1)/(f(i+2)-f(i+1));
          else
            W[j]=0;
        }
  }                       //W is a frmlen*M matrix


  for(i=0;i<frmlen;i++)
  {
    for(j=0;j<N;j++)
        {
          temp[j]=pow(S[j],2);  
    }
  }


  for(i=0;i<N;i++)
  {
    for(k=0;k<M;k++)
        {
          sum=0;
          for(j=0;j<frmlen;j++)
      {
            sum=sum+temp[j]*W[j][k];
      }
          cof[k]=sum;
        }
  }

  for(i=0;i<frmN;i++)
  {
    for(j=0;j<M;j++)
        {
          sum=0;
          for(k=0;k<M;k++)
          {
            sum=sum+log10(cof[k])*cos((k-0.5)*j*PI/M);
          }
          mfcc[j]=sum;
        }
   }
  for(i=0;i<M;i++)
  {
    for(j=0;j<N;j++)
   {
      if(j<(frmN-1))
     {
        if(i<(M-1))
          mfcc[j]=mfcc[j+1];
            else
              mfcc[j]=0;
     }
     else
        {
          mfcc[j]=0;        /*effective mfcc is (M-1)*frmN *;from frmN+1 column to N column is 0 */
        }
  }
}
}




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
chybeyond
1楼-- · 2019-08-05 19:33
f=700*pow(10,(melf*i/(2595*(M+1))-1));问题应该在这一句,f是数组首地址,复制时候应该强制类型转换为指针形式加上(double *)
zhangmangui
2楼-- · 2019-08-06 00:18
你调用此函数void mfcc(double mfcc[][N],double S[][N],int frmN) 的代码贴出来吧
我觉得应该是函数传递的参数问题吧
糖糖780
3楼-- · 2019-08-06 05:22
zhangmangui 发表于 2014-4-6 23:25
你调用此函数void mfcc(double mfcc[][N],double S[][N],int frmN) 的代码贴出来吧
我觉得应该是函数传递的 ...

double temp_data[frmlen][N];
double Mfcc_data[M][N];
temp_frmN=floor((len-1-frmlen)/frmcnt)+1; % temp_frmN根据这个表达式求得
下面就是对mfcc()函数的调用
mfcc(Mfcc_data,temp_data,temp_frmN);
糖糖780
4楼-- · 2019-08-06 06:33
chybeyond 发表于 2014-4-6 14:45
f=700*pow(10,(melf*i/(2595*(M+1))-1));问题应该在这一句,f是数组首地址,复制时候应该强制类型转换为指 ...

可能贴的时候有问题,原程序里是f=700*pow(10,(melf*i/(2595*(M+1))-1));
应该不是这个问题
糖糖780
5楼-- · 2019-08-06 11:31
 精彩回答 2  元偷偷看……
糖糖780
6楼-- · 2019-08-06 13:11
糖糖780 发表于 2014-4-7 09:03
可能贴的时候有问题,原程序里是f=700*pow(10,(melf*i/(2595*(M+1))-1));
应该不是这个问题 ...

thaks! 这个问题已经解决了~

一周热门 更多>