如何用C语言或汇编语言实现FFT(快速傅里叶)变换,并写出C语言或汇编代码,万分感谢。 如何用单片机实现文字滚动,汇编语言或C语言都可以
\u6c42\u4e2a\u5feb\u901f\u5085\u91cc\u53f6\u53d8\u6362\u7684C\u8bed\u8a00\u7a0b\u5e8fvoid fft(){ int nn,n1,n2,i,j,k,l,m,s,l1; float ar[1024],ai[1024]; // \u5b9e\u90e8 \u865a\u90e8 float a[2050]; float t1,t2,x,y; float w1,w2,u1,u2,z; float fsin[10]={0.000000,1.000000,0.707107,0.3826834,0.1950903,0.09801713,0.04906767,0.02454123,0.01227154,0.00613588,};// \u4f18\u5316 float fcos[10]={-1.000000,0.000000,0.7071068,0.9238796,0.9807853,0.99518472,0.99879545,0.9996988,0.9999247,0.9999812,}; nn=1024; s=10; n1=nn/2; n2=nn-1; j=1; for(i=1;i>1; w1=fcos[i-1]; w2=-fsin[i-1]; for(j=1;j<=k;j++) { for(l=j;l<nn;l=l+m) { l1=l+k; t1=a[2*l1]*u1-a[2*l1+1]*u2; t2=a[2*l1]*u2+a[2*l1+1]*u1; a[2*l1]=a[2*l]-t1; a[2*l1+1]=a[2*l+1]-t2; a[2*l]=a[2*l]+t1; a[2*l+1]=a[2*l+1]+t2; } z=u1*w1-u2*w2; u2=u1*w2+u2*w1; u1=z; } } for(i=1;i<=nn/2;i++) { ar[i]=a[2*i+2]/nn; ai[i]=-a[2*i+3]/nn; a[i]=4*sqrt(ar[i]*ar[i]+ai[i]*ai[i]); // \u5e45\u503c }}
\u5982\u4f55\u7528\u5355\u7247\u673a\u5b9e\u73b0\u6587\u5b57\u6eda\u52a8\uff0c
----
\u5148\u5b9e\u73b0\u663e\u793a\u4e00\u5e45\u7a33\u5b9a\u7684\u6587\u5b57\uff0c\u518d\u95f4\u9694\u51e0\u767e\u6beb\u79d2\uff0c\u663e\u793a\u53e6\u4e00\u5e45\uff0c...
\u9010\u5e45\u7684\u66f4\u6362\uff0c\u5373\u53ef\u5b9e\u73b0\u6587\u5b57\u7684\u6eda\u52a8\u3002
\u663e\u793a\u4e00\u5e45\u7a33\u5b9a\u7684\u6587\u5b57\uff0c\u697c\u4e3b\u5df2\u7ecf\u5b9e\u73b0\u4e86\u5417\uff1f
\u663e\u793a\u51fa\u6765\u770b\u770b\uff0c\u6c47\u7f16\u8bed\u8a00\u6216C\u8bed\u8a00\u90fd\u53ef\u4ee5\u3002
\u53e6\u5916\uff0c\u697c\u4e3b\u4e5f\u6ca1\u6709\u7ed9\u51fa\u663e\u793a\u5c4f\u7684\u7535\u8def\uff0c\u600e\u4e48\u597d\u7f16\u5199\u7a0b\u5e8f\uff1f
\u6709\u4e2a\u73b0\u6210\u7684\uff0c\u53ef\u53c2\u8003\u4e00\u4e0b\uff1a
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/7bfd810fd4f54bd07acbe167.html
float a[2050];
void fft(int nn) /* nn数据长度 */
{
int n1,n2,i,j,k,l,m,s,l1;
float t1,t2,x,y;
float w1,w2,u1,u2,z;
float fsin[10]={0.000000,1.000000,0.707107,0.3826834,0.1950903,0.09801713,0.04906767,0.02454123,0.01227154,0.00613588,};
float fcos[10]={-1.000000,0.000000,0.7071068,0.9238796,0.9807853,0.99518472,0.99879545,0.9996988,0.9999247,0.9999812,};
switch(nn)
{
case 1024: s=10; break;
case 512: s=9; break;
case 256: s=8; break;
}
n1=nn/2; n2=nn-1;
j=1;
for(i=1;i<=nn;i++)
{
a[2*i]=ar[i-1];
a[2*i+1]=ai[i-1];
}
for(l=1;l<n2;l++)
{
if(l<j)
{
t1=a[2*j];
t2=a[2*j+1];
a[2*j]=a[2*l];
a[2*j+1]=a[2*l+1];
a[2*l]=t1;
a[2*l+1]=t2;
}
k=n1;
while (k<j)
{
j=j-k;
k=k/2;
}
j=j+k;
}
for(i=1;i<=s;i++)
{
u1=1;
u2=0;
m=(1<<i);
k=m>>1;
w1=fcos[i-1];
w2=-fsin[i-1];
for(j=1;j<=k;j++)
{
for(l=j;l<nn;l=l+m)
{
l1=l+k;
t1=a[2*l1]*u1-a[2*l1+1]*u2;
t2=a[2*l1]*u2+a[2*l1+1]*u1;
a[2*l1]=a[2*l]-t1;
a[2*l1+1]=a[2*l+1]-t2;
a[2*l]=a[2*l]+t1;
a[2*l+1]=a[2*l+1]+t2;
}
z=u1*w1-u2*w2;
u2=u1*w2+u2*w1;
u1=z;
}
}
for(i=1;i<=nn/2;i++)
{
ar[i]=4*a[2*i+2]/nn; /* 实部 */
ai[i]=-4*a[2*i+3]/nn; /* 虚部 */
a[i]=4*sqrt(ar[i]*ar[i]+ai[i]*ai[i]); /* 幅值 */
}
}
去c++吧看看,我记得有人发了一个。
绛旓細渚嬪瓙锛歩nclude <reg52.h> void main(){ P0^1=1;pragma asm 姹囩紪寤舵椂绋嬪簭 pragma endasm P0^1=0;} 2.C绋嬪簭璋冪敤姹囩紪 锛1锛塁鏂囦欢鏍煎紡 C绋嬪簭璋冪敤姹囩紪鍑芥暟涔嬪墠蹇呴』鍏堢敤extern瀵瑰嚱鏁板姞浠ュ0鏄 渚嬪瓙锛歩nclude<reg51.h> extern void DLY1s();void main(){ P2=0xff;DLY1s();P2=0;} 锛2锛夋眹缂...
绛旓細http://blog.163.com/asm_c/blog/static/2482031132014485270627/ 鍙傝冦
绛旓細鏄殑 澶ч儴鍒姹囩紪鍔熻兘 閮藉彲浠鐢–瀹炵幇 涓嶈繃 骞朵笉鏄墍鏈 鑰屼笖 浠庢晥鐜囦笂鏉ヨ C鐨勮浣庝竴浜 姣斿 姹囩紪100涓寚浠ゅ彲浠ュ疄鐜扮殑鍔熻兘锛岀敤C鍐欏畬锛岀紪璇戦摼鎺ワ紝褰㈡垚鐨勪簩杩涘埗鎸囦护鍙兘灏辨槸150鏉℃眹缂栨寚浠や簡銆傝繖鏄珮绾璇█涓嶅彲閬垮厤鐨勶紝鑰孋宸茬粡鏄晥鐜囨瘮杈冮珮鐨勯珮绾ц瑷浜嗐
绛旓細1銆佹枃鏈琀ex鏂囦欢涓鑸笉闇瑕佽浆鎴C璇█,鏇村鐨勬槸绋嬪簭浜岃繘鍒舵枃浠,鐢ㄥ崄鍏繘鍒舵樉绀,鍙互杞崲鎴怌璇█,涓鑸娇鐢ㄧ浉搴旂殑鍙姹囩紪绋嬪簭鏉瀹炵幇,杩欐柟闈㈢殑宸ュ叿寰堝,涓嶅悓鐨勫钩鍙扮暐鏈変笉鍚屻俉indows骞冲彴涓鑸父鐢ㄧ殑OllyDbg銆乄indbg銆両DA,Linux骞冲彴浣跨敤鏈澶氱殑鏄疓DB鍜孡inux鐗堢殑IDA銆 OllyDbg,绠绉癘D,涓鑸槸杞欢閫嗗悜宸ョ▼鐖卞ソ鑰,鏈鍏堜娇鐢ㄧ殑涓...
绛旓細浣犺繖涓棶棰樺お涓嶅ソ鍥炵瓟浜嗐姹囩紪璇█灞炰簬姣旇緝浣庣骇鐨勮瑷锛岃孋璇█鏄珮绾ц瑷銆傚鏋滆寮鍙戜竴涓ぇ鍨嬮」鐩紝浼拌鐢ㄦ眹缂栬瑷浼氱疮鍚愯锛岃櫧鐒鐢–璇█涔熶笉杞诲揩銆侰璇█寮鍙戝彨姹囩紪瑕佽繀閫燂紝浣嗘槸鐢变簬楂樼骇璇█鐨勬ц川鍐冲畾浜嗚閫氳繃缂栬瘧鐢熸垚浠g爜锛堣櫧鐒舵眹缂栦篃瑕佺紪璇戯紝浣嗛偅绉嶇紪璇戞槸涓瀵逛竴鐨勶紝浣犳噦寰楋級锛岃繖灏卞缂栬瘧鍣ㄧ殑鎬ц兘绛...
绛旓細浠g爜濡備笅锛歩nt main(){ float r,h,s;scanf("%f",&r)锛泂canf("%f",&h);s=2*3.1415926*r*r+2*3.1415926*r*h printf("琛ㄩ潰绉槸%f\n",s);return 0;}
绛旓細瀹炲湪涓嶈兘缁欐簮绋嬪簭鐨勭粰涓叿浣撲竴鐐圭殑绠楁硶涔熻,灏辨槸璇存垜璇鎬庢牱瀹炵幇鍏堟樉绀0000鐒跺悗鍒000F,鐒跺悗鍙堝埌0010--001FF鈥︹︿竴鐩村埌FFFF/*鍗曚釜鏁扮爜绠$殑鍔ㄦ佹樉绀*/#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit du=P2^6;sbit we=P2^7;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,...
绛旓細涔熷彲浠ヨ缂栬瘧鍣ㄧ紪璇戞椂杈撳嚭姹囩紪浠g爜锛岀劧鍚庡啀鍦ㄤ笂闈㈣繘琛屾敼鍔紝鏈鍚庝竴骞惰浆鎴愭満鍣ㄧ爜銆傝鐢ㄥ摢绉嶆柟娉曡繕鏄湅闇瑕佽屽畾锛屽鏋滄槸瀹炵幇涓涓壒瀹氭ā鍧楋紝鍙互鍐呭祵锛涘鏋滄槸瑕佸仛浠g爜璋冩暣锛岀敤鍚庝竴绉嶃備笉杩囪瘽璇村洖鏉ワ紝鍦ㄧ幇浠g紪璇戝櫒鎶婁紭鍖栧凡缁忓仛寰楀緢濂界殑鎯呭喌涓嬶紝鐢–杩欎箞搴曞眰鐨璇█宸茬粡寰堝皯鐢ㄥ緱鍒版眹缂栦簡銆
绛旓細鍦ㄨ皟璇曡仈鐩涘痉W800鑺墖浠g爜鏃讹紝鐪嬪埌浜嗕笅闈㈢殑浠g爜瀹炵幇锛岃褰曚笅C璇█鍐呭祵姹囩紪璇█鐨勫疄鐜版柟寮忋傞儴鍒嗕唬鐮佸涓嬶細璇ュ嚱鏁板疄鐜板姛鑳斤細灏嗗叆鍙俷ewMask鐨勫煎啓鍏ュ埌psr瀵勫瓨鍣紝鐢ㄤ簬鎭㈠鐜板満銆備唬鐮佷笅杞借矾寰勶細http://www.winnermicro.com/html/1/156/158/558.html __asm__ (姹囩紪璇彞閮ㄥ垎 :杈撳嚭閮ㄥ垎 :杈撳叆閮ㄥ垎 :鐮村潖...
绛旓細externvoidDELAY(void);4銆佸湪姹囩紪璇█绋嬪簭涓繀椤诲0鏄庤璋冪敤瀛愮▼搴忎负鍏叡瀛愮▼搴忥紝鍦ㄨ璋冪敤鐨勬枃浠朵腑杩橀渶瑕佸0鏄庢鏂囦欢鏄柊瀹氫綅鐨勩侾UBLICDELAY,DELDELAYYSEGMENTCODERSEGAELAYY瀹炰緥濡備笅锛#include"reg51.h"externvoidDELAY(void);externvoidDEL(void);voidmain(void){P1=0x00;DELAY();DEL();P!=0xff;}...