24小时热门版块排行榜    

查看: 1773  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

hzy0919

铜虫 (小有名气)

[交流] 【求助】S(Q)--G(r)转换问题 已有2人参与

本人用分子动力学方法计算出G(r),现在想转换为S(Q)。
自己编写个傅立叶变换程序,得到的S(Q)中主峰前部分不正确,这样就观测不到预峰了。
下面是转换图像和部分程序,请高手指点。



Matlab 程序片段
for q=1:1:size(data_cal,1)/4
    n=n+1;
    pp=spline(x_cal,(y_cal-1).*x_cal.*sin(x_cal.*q/2));
    int_pp=fnint(pp);
    re=ppval(int_pp,1);
    sq(n)=1.+re./(q/2)*4*pi*rou0;
    R(n)=q/2;
end
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

老虎大王

木虫 (著名写手)

★ ★
cadick(金币+2): 2010-05-26 23:56:31
问题好像就是源自我们的G(r)在是强行截断的,而且数值总是有波动,而不是像理论上那样光滑而且收敛到1,这样傅氏变换后,结构因子的小波数部分就不正确了。所以这是方法上的一个固有的问题,相当于实验上的系统误差一样,是不能消除的,不是你的错误。最好是数据处理把它消掉,加指数因子等作法我觉得不完全合适,因为那个因子毕竟在原理上是不存在的,这样好像又引入了另外的误差。
4楼2010-05-24 10:37:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

老虎大王

木虫 (著名写手)


hzy0919(金币+1):谢谢参与
hzy0919(金币+1): 2010-05-24 08:11:09
主峰前面的小峰,不是你算错了,而是在傅立叶变换的时候生成的一些不该有的小峰,这些小峰是与你的G(r)有强行的截断有关的,这是傅立叶变换方法求结构因子的一个固有的问题,你需要用数据处理方法消掉这些峰,或者说明它的来源。
2楼2010-05-24 07:50:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hzy0919

铜虫 (小有名气)

引用回帖:
Originally posted by hzy0919 at 2010-05-23 10:20:53:
本人用分子动力学方法计算出G(r),现在想转换为S(Q)。
自己编写个傅立叶变换程序,得到的S(Q)中主峰前部分不正确,这样就观测不到预峰了。
下面是转换图像和部分程序,请高手指点。
[img]http://pic.muchong.com ...

查了一下,这个有些地方称为“鬼峰”,说的加一个指数因子exp(-aQ^2),试了一下不行,不知道问题出在哪里?
请高人指点
3楼2010-05-24 08:12:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

正月圆月

金虫 (小有名气)


hzy0919(金币+1):谢谢参与
送鲜花一朵
楼主能把你的程序发给我一份吗,现在急着用结构因子,可是不会编程序。发我邮箱 aaxixilele2008@163.com 万分感谢!
5楼2012-01-01 22:23:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见