作者kkk1225 (kkk1225)
看板C_and_CPP
標題Re: [問題] 如何用C表示複數
時間Wed Oct 14 20:15:56 2009
※ 引述《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
1F:推 snowlike:MATLAB怎麼求實部值的?如果其實是頻譜..傅立葉轉換後的 10/14 20:49
2F:→ snowlike:實部虛部運算後才會得到傅立葉係數,前處理後才是頻譜 10/14 20:50
3F:→ snowlike:頻譜的數值是拿來容易觀察的跟傅立葉轉換沒有關係 10/14 20:51
4F:→ VictorTom:Re自己的文麻煩不要全部放在: 後面, 乍看之下全是引言不 10/14 21:01
5F:→ VictorTom:知道你要問什麼; 另外, 我記得很早就有人提醒過了, 你的 10/14 21:02
6F:推 VictorTom: ^^^^^^^^^^^^^^^^^別理我, 和舊 10/14 21:05
7F:→ VictorTom:的code搞混了. 10/14 21:05
8F:→ VictorTom:你的x有給適當的初值嗎?? x明明是double, 上面卻有個 10/14 21:05
9F:→ VictorTom:x[][], 另外運算了x=x+####, 可是我沒找到x哪裡給初值. 10/14 21:06
10F:→ VictorTom:然後code裡還有個奇怪的y, 你要不要重整一下code再貼@@ 10/14 21:07
11F:推 VictorTom:對了, x是double, 要printf x要用%lf而不能只用%f.... 10/14 21:09
12F:→ kkk1225:打錯ㄌ,x=0才對不是y=0 10/15 09:47