Re: [問題] 如何用C表示複數

看板C_and_CPP (C/C++)作者 (kkk1225)時間16年前 (2009/10/14 20:15), 編輯推噓3(309)
留言12則, 3人參與, 最新討論串3/3 (看更多)
※ 引述《kkk1225 (kkk1225)》之銘言: : /*fft2*/ : #include<stdio.h> : #include<stdlib.h> : #include<math.h> : #include<complex.h> : #define PI 3.1415 : int main(void) : { : int i,j,m,n,u,v,M=4,N=4; : double x; : int f[4][4]={0}; : int F[4][4]={0}; : for(i=1;i<=2;i++) : { : for(j=1;j<=2;j++) : { : x[i][j]=1;/設計矩陣中間元素/ : } : } : for(u=0;u<=3;u++) : { : for(v=0;v<=3;v++) : { : y=0; : for(m=0;m<=3;m++) : { : for(n=0;n<=3;n++) : { : x=x+f[m][n]*cos(2*PI*((u*m)/M+(v*n)/N));/* 二維傅立葉轉換公式 */ : } : } : : printf("F[%d][%d]=%f\n",u,v,x); : } : } : system("pause"); : return 0; : } : 程式跑出來F[u][v]實部的值,為什麼跟我用MATLAB求的實部值有很大的誤差 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.32.178

10/14 20:49, , 1F
MATLAB怎麼求實部值的?如果其實是頻譜..傅立葉轉換後的
10/14 20:49, 1F

10/14 20:50, , 2F
實部虛部運算後才會得到傅立葉係數,前處理後才是頻譜
10/14 20:50, 2F

10/14 20:51, , 3F
頻譜的數值是拿來容易觀察的跟傅立葉轉換沒有關係
10/14 20:51, 3F

10/14 21:01, , 4F
Re自己的文麻煩不要全部放在: 後面, 乍看之下全是引言不
10/14 21:01, 4F

10/14 21:02, , 5F
知道你要問什麼; 另外, 我記得很早就有人提醒過了, 你的
10/14 21:02, 5F

10/14 21:05, , 6F
^^^^^^^^^^^^^^^^^別理我, 和舊
10/14 21:05, 6F

10/14 21:05, , 7F
的code搞混了.
10/14 21:05, 7F

10/14 21:05, , 8F
你的x有給適當的初值嗎?? x明明是double, 上面卻有個
10/14 21:05, 8F

10/14 21:06, , 9F
x[][], 另外運算了x=x+####, 可是我沒找到x哪裡給初值.
10/14 21:06, 9F

10/14 21:07, , 10F
然後code裡還有個奇怪的y, 你要不要重整一下code再貼@@
10/14 21:07, 10F

10/14 21:09, , 11F
對了, x是double, 要printf x要用%lf而不能只用%f....
10/14 21:09, 11F

10/15 09:47, , 12F
打錯ㄌ,x=0才對不是y=0
10/15 09:47, 12F
文章代碼(AID): #1ArS3zug (C_and_CPP)
文章代碼(AID): #1ArS3zug (C_and_CPP)