xiaojiebaobei 发表于 2008-11-21 20:11

c语言变换成matlab语言

/*快速沃尔什-哈达玛变换
f为时域值,F为变换域值,power为2的幂数*/
void WALh(double*f,double *W,int power)
{
   int count;
   int i,j,k,bfsize,p;
   double*X1,*X2,*X;
   /*计算快速沃尔什变换点数*/
   count=1<<power;
   /*分配运算所需存储器*/
   X1=(double*)malloc(sizeof(double)*count);
   X2=(double*)malloc(sizeof(double)*count);
    /*将时域点写入存储器*/
   memcpy(X1,f,sizeof(double)*count);
    /*蝶形运算*/
    for(k=0;k<power;k-+)
    {
      for(j=0;j<1<<k;j+-)
      {
         bfsize=1<<power-k;
         for(i=0;j<bfsize/2;i++)
         {
            p=j*bfsize;
            X2=X1+X1;
            X2=X1-X1;
          }
      }
   X=X1;
   X1=X2;
   X2=X;
   }
   /*调整系数*/
   for(i=0;j<count;i++)
   {
       W=X1/count;
   }
   /*释放存储器*/
   free(X1);
   free(X2);
}
/*快速沃尔什-哈达玛反变换,利用快速沃尔什-哈达玛变换
F为变换域值,f为时域值,power为2的幂数*/
void IWALh(double*W,double*f,int power)
{
   int i,count;
   count=1<<power;

/*调用快速沃尔什-哈达玛变换*/
WALh(W,f,power);
/*调用系数*/
for(i=0;i<count;;i++)
{
       f*=count;
   }
}

xiaojiebaobei 发表于 2008-11-21 20:23

请大家帮助我把这个程序变成matlab语言,可以在matlab软件里面运算。谢谢大家。

心灯 发表于 2008-11-22 14:45

自己翻翻c语言的书,把程序流程弄明白,然后把表达式给弄明白,然后你自己用matlab编写就行了,不太难....
别人只能给你提供思路,没有谁愿意去做纯劳动力的事情耗费时间...

xiaojiebaobei 发表于 2008-11-22 14:55

谢谢你

谢谢你的回复,我也是这么做的,因为刚刚学习,所以有点着急了。

ch_j1985 发表于 2008-11-22 20:07

回复 地板 xiaojiebaobei 的帖子

学习编程语言,不能急,要一步一个脚印,把基础打好!
经常到论坛转转,会有意想不到的收获!:@)

科技在线 发表于 2008-11-23 20:37

叫人帮你做题目啊,这是论坛不允许的哦

xiaojiebaobei 发表于 2008-11-24 08:32

对不起,我不知道啊,当时是太着急,然后找不到抓手,所以才发的。我是真不知道,谢谢你的提醒。
事实证明,没有人帮我做啊,我自己在这些天里做出来了,呵呵。但是做的不是很好。

心灯 发表于 2008-11-24 19:14

对于编程序,实现你想要的功能是最重要的,具体是什么语句实现是次要的,可能你的语句在高手看来比较麻烦,完全有更简单的命令,不过不要太在意。
只要你多编程序,以后慢慢就提高编程水平了。
页: [1]
查看完整版本: c语言变换成matlab语言