|
楼主 |
发表于 2008-6-29 22:03
|
显示全部楼层
回复 3楼 的帖子
非常感谢你的答复,依你的方法确实能得到两组相同的结果。
但是我是想让tv的取值大于0时的结果。事实上我碰到是一个分段函数。我将t<0用0进行延拓。所以我对xv的取值很不确定(很抱歉我这方面的知识很欠缺,我从书上的理解是如果tv取值为0-1(fft似乎就是认为tv在其中取值),那么xv的取值是0:2*pi:(N-1)*2*pi)。
我把我实际要解决的问题的程序贴出来吧
%我要做的初步方案是检测g^=v1*f^,即g的Fourier变换后等于v1乘上f的Fourier变换
%这个等式已经被证明是正确的了。(当然上面的等式是针对连续F变换的)
syms xi t theta v1 v u g f
syms omega
x=0.30;
E=3;
tvalue=0.002:0.002:1;
xivalue=0:pi:500*2*pi;
%这个取值方法有待商榷,因为我在后面将tvalue从0-1延拓到了到了
%0-2所以我对xivalue的值是个什么样子不明白。。
delta=1.0e-3;
theta=sqrt(i*xi+0.25)-0.5;
u=(x+1)/t^1.5*exp(-(x+1-t)^2/(4*t));
g=2*sqrt(t)/t^2*exp(-(2-t)^2/(4*t)); %这个函数是我实际需要检测的函数
f=1/t^(1.5)*exp(-(1-t)^2/(4*t));
v=exp(-x*theta);
v1=exp(-theta);
nu_g=zeros(1,501);
nu_f=zeros(1,501);
nu_u=zeros(1,501);
nu_g(2:501)=subs(g,tvalue);
nu_f(2:501)=subs(f,tvalue);
nu_u(2:501)=subs(u,tvalue);
nu_v=subs(v,xivalue);
nu_v1=subs(v1,xivalue);
%-------------make periodization-------%
%下面的是做周期化处理也就是将0-1延拓到0-2使其
%具有周期性。这个方法我是参考国外一篇论文的方法。
spline_t_value=[0.970:0.002:1,1.988:0.002:2];
spline_g_value=[nu_g(486:501),zeros(1,7)];
spline_f_value=[nu_f(486:501),zeros(1,7)];
spline_u_value=[nu_u(486:501),zeros(1,7)];
nuspline_t=0:0.002:2;
pp=spline(spline_t_value,spline_g_value);
nuspline_g=[nu_g,ppval(pp,1.002:0.002:2)];
pp=spline(spline_t_value,spline_f_value);
nuspline_f=[nu_f,ppval(pp,1.002:0.002:2)];
pp=spline(spline_t_value,spline_u_value);
nuspline_u=[nu_u,ppval(pp,1.002:0.002:2)];
normg=sqrt(intergral([0,tvalue],nu_g.^2));
%-------------make periodization-------%
fft_f=fft(nuspline_f);
fft_g=fft(nuspline_g);
cal_g=nu_v1.*fft_f;
%根据楼上的提示下面的也应该要修改
plot(xivalue,abs(fft_g),'r.-');
hold on
plot(xivalue,abs(cal_g),'-'); |
|