打印

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

[复制链接]
2955|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
糖糖780|  楼主 | 2014-4-6 11:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RT,代码及错误如下,实在是找不出是什么错误,请各位大神帮忙看看,先谢谢大家了!
代码中蓝色字体对应的分别是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 */
        }
  }
}
}




相关帖子

沙发
chybeyond| | 2014-4-6 14:45 | 只看该作者
f=700*pow(10,(melf*i/(2595*(M+1))-1));问题应该在这一句,f是数组首地址,复制时候应该强制类型转换为指针形式加上(double *)

使用特权

评论回复
板凳
zhangmangui| | 2014-4-6 23:25 | 只看该作者
你调用此函数void mfcc(double mfcc[][N],double S[][N],int frmN) 的代码贴出来吧
我觉得应该是函数传递的参数问题吧

使用特权

评论回复
地板
糖糖780|  楼主 | 2014-4-7 08:59 | 只看该作者
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);

使用特权

评论回复
5
糖糖780|  楼主 | 2014-4-7 09:03 | 只看该作者
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));
应该不是这个问题

使用特权

评论回复
6
糖糖780|  楼主 | 2014-4-7 09:32 | 只看该作者
糖糖780 发表于 2014-4-7 08:59
double temp_data[frmlen][N];
double Mfcc_data[M][N];
temp_frmN=floor((len-1-frmlen)/frmcnt)+1; % t ...

多谢了哈,这个问题已经解决了,是我对数组进行操作的时候格式书写有错。

使用特权

评论回复
7
糖糖780|  楼主 | 2014-4-7 09:33 | 只看该作者
糖糖780 发表于 2014-4-7 09:03
可能贴的时候有问题,原程序里是f=700*pow(10,(melf*i/(2595*(M+1))-1));
应该不是这个问题 ...

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

使用特权

评论回复
8
zhangmangui| | 2014-4-8 22:18 | 只看该作者
糖糖780 发表于 2014-4-7 09:33
thaks! 这个问题已经解决了~

解决了   帮忙分享一下

使用特权

评论回复
9
拿起书本| | 2014-4-9 09:10 | 只看该作者
我自己写程序的时候也是,往往是到了快结束时发现某些地方可以改进,只要不是太致命的问题就下一个工程再统一升级。

使用特权

评论回复
10
糖糖780|  楼主 | 2014-4-12 09:27 | 只看该作者
这种情况是由于对数组的不当操作造成的,比如在我这里是因为将数组f中的各个元素误写成了f(i),而在C语言里,使用f[i]来表示数组f中的第i个元素的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

31

帖子

0

粉丝