作者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