DSP实验 让我用C语言编写程序完成计算sin(2.3π)+cos(1.7π)的ŀ

DSP实验 让我用C语言编写程序完成计算sin(2.3π)+cos(1.7π)的ŀ,第1张

何编程语言是难学的,真正的工作中有时候学习一个新语法只有不到一周的时间,语法而言都一样,如果还停留在语法层学习的上面,编写程序的道路你就连门都没有入
但是后续的 数据结构和算法 稍微要看下书了,开始接触算法了,着和语法没有关系,之所以要先学好语法是为了能看懂用语法描叙的算法,学通了用任何语言来描叙都一样,到了这个阶段的就相当于抬起一条腿准备跨到起跑线一样,但还是没有入门
到编译原理 和 图灵机 再到 自己编写微型的 *** 作系统 就需要有个老师来引导了
我学软件开发就是从C开始一路由 ->国家数据库3级-> 程序员->高级程序员->系统分析师考上去然后通过近9年的工作,体会是如果你能够在市面上或者学校里精确买到或者学到的一门知识往往就表示你的层次还是不能让你得兴应手的在行业中创造你能想像的东西,真正的解决问题需要很多本书再加上80%以上的自己创造和理解才能做出来的时候才算真正懂得了你的工作
一个程序员需要这样的经历
楼上的估计最高学历不过是理工科的一个大学生,应该还没毕业,没有在计算机行业呆过,在做芯片处理的工作中比如DSP芯片设计需要你天天接触算法,但是这和C语言本身有关系吗傅立叶算法是数学家傅立叶设计出来的数学模型但是不适合做在计算机软件里面(运算量太大了比如离散的傅立叶变换等同于用序列Y(n×1列矢量)乘以n×n矩阵Fn,需要n×n次乘法。若n=1024,则是104,8576次乘法运算。什么概念呢?如果你选用的CPU单周期指令为25ns, 单周期也可以完成一次乘法运算,那么要计算1024点的傅立叶变换则需要262144ms,这还不包括加法或其它运算),我给出C算法如下:
void kkfft(double pr[], double pi[], int n, int k, double fr[], double fi[], int l, int il)
{
int it,m,is,i,j,nv,l0;
double p,q,s,vr,vi,poddr,poddi;

for (it=0; it<=n-1; it++)
{
m = it;
is = 0;
for(i=0; i<=k-1; i++)
{
j = m/2;
is = 2is+(m-2j);
m = j;
}
fr[it] = pr[is];
fi[it] = pi[is];
}
//----------------------------
pr[0] = 10;
pi[0] = 00;
p = 6283185306/(10n);
pr[1] = cos(p);
pi[1] = -sin(p);

if (l!=0)
pi[1]=-pi[1];

for (i=2; i<=n-1; i++)
{
p = pr[i-1]pr[1];
q = pi[i-1]pi[1];
s = (pr[i-1]+pi[i-1])(pr[1]+pi[1]);
pr[i] = p-q;
pi[i] = s-p-q;
}

for (it=0; it<=n-2; it=it+2)
{
vr = fr[it];
vi = fi[it];
fr[it] = vr+fr[it+1];
fi[it] = vi+fi[it+1];
fr[it+1] = vr-fr[it+1];
fi[it+1] = vi-fi[it+1];
}
m = n/2;
nv = 2;

for (l0=k-2; l0>=0; l0--)
{
m = m/2;
nv = 2nv;
for(it=0; it<=(m-1)nv; it=it+nv)
for (j=0; j<=(nv/2)-1; j++)
{
p = pr[mj]fr[it+j+nv/2];
q = pi[mj]fi[it+j+nv/2];
s = pr[mj]+pi[mj];
s = s(fr[it+j+nv/2]+fi[it+j+nv/2]);
poddr = p-q;
poddi = s-p-q;
fr[it+j+nv/2] = fr[it+j]-poddr;
fi[it+j+nv/2] = fi[it+j]-poddi;
fr[it+j] = fr[it+j]+poddr;
fi[it+j] = fi[it+j]+poddi;
}
}

if(l!=0)
for(i=0; i<=n-1; i++)
{
fr[i] = fr[i]/(10n);
fi[i] = fi[i]/(10n);
}

if(il!=0)
for(i=0; i<=n-1; i++)
{
pr[i] = sqrt(fr[i]fr[i]+fi[i]fi[i]);
if(fabs(fr[i])<0000001fabs(fi[i]))
{
if ((fi[i]fr[i])>0)
pi[i] = 900;
else
pi[i] = -900;
}
else
pi[i] = atan(fi[i]/fr[i])3600/6283185306;
}

return;
}
另外,团IDC网上有许多产品团购,便宜有口碑

以上就是关于DSP实验 让我用C语言编写程序完成计算sin(2.3π)+cos(1.7π)的ŀ全部的内容,包括:DSP实验 让我用C语言编写程序完成计算sin(2.3π)+cos(1.7π)的ŀ、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10126684.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存