作者ckskyline (vck)
看板perl
标题perl写Foueier Transform的问题
时间Wed Oct 18 13:47:05 2006
以下是我写的程式!新手请各位大大指教
写的是离散时候的傅立叶转换
其中我觉得写的数值有点不是很正确...但又不知道怎麽配到正确值
还有虚部i值的处理要怎麽解决?
烦请各位大大给点建议^^谢谢您
use Math::Trig;
use Math::complex;
printf "输入累加范围上界:";
$top = <STDIN>;
printf "输入累加范围下界:";
$low = <STDIN>;
print"请输入x[n]=:";
$Y=<STDIN>;
$N =($top)-($low)+1;
printf"范围内个数为(取整数):$N\n";
print"Because x<k>[n]=x[n/k]\n";
print"请输入<k>=:";
$k=<STDIN>;
$M=$Y/$k;
for ($t=0; $t<10; $t++)
{
$w=0.6283*$t;
$W=int($w);
$sum =cosx();
$sum1=sinx();
$Sum=int($sum*$M);
$Sum1=int($sum1*$M);
printf "w为%.1f\n", $W;
printf "累加cos结果为%.1f\n", $sum;
printf "累加sin结果为%.1f\n", $sum1;
print"Equal x(e**jkw)=Σxk[n]5*e**-jwn=xk[n]\n";
printf" Answer = %.3f+i(%.3f)\n",$sum,$sum1;
$sum =0;
$sum1 =0;
sub cosx{
for ($i=0; $i<$N; $i++)
{
$sum =$sum + cos($x) ;#加总
$x =$x + $N; #下一个X座标
}
return $sum;
}
sub sinx{
for ($i=0; $i<$N; $i++)
{
$sum1 =$sum1 + sin($x) * $N;
$x =$x + $N;
}
return $sum1;
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.231.230.194