1

我在编程方面有点新手,因为我们在物理学学位中被要求这样做。我正在使用 Python 2。

我得到了一个包含两列数据的 txt 文件,前几行如下所示:

0.000000000000000000e+00 7.335686114232199684e-02 
1.999999999999999909e-07 7.571960558042964973e-01
3.999999999999999819e-07 9.909475704320810374e-01
5.999999999999999728e-07 3.412754086075696081e-01
7.999999999999999638e-07 -5.558766000866324219e-01
9.999999999999999547e-07 -9.810046985453722002e-01
1.199999999999999946e-06 -5.436864816312496629e-01
1.399999999999999937e-06 2.645021165628647641e-01
1.599999999999999928e-06 9.667259209284312371e-01
1.799999999999999919e-06 7.395753817164774091e-01
1.999999999999999909e-06 7.289488801158025555e-02
2.200000000000000112e-06 -7.925906572709742193e-01
2.399999999999999891e-06 -9.727702002847055107e-01
2.599999999999999671e-06 -1.772398644968510018e-01
2.799999999999999873e-06 6.627909312992285029e-01
3.000000000000000076e-06 1.022032186188189362e+00
3.199999999999999855e-06 5.531242183135693935e-01

并且它持续了数百行。

问题问:本周您收到了一个文件,该文件由外部脉冲后的模拟 NMR 时域响应组成。这种自由感应衰减 (FID) 的特征在于频率、初始幅度和衰减常数。数据有一个单一的振荡频率,第二个包含两个频率的混合。编写一个程序来评估两个信号的快速傅里叶变换,并将它们绘制在频域中。

有人可以给我一个例子来说明我如何去做这件事吗?不幸的是,我们在实验室中没有得到太多指导,只是一些在线教程,或者告诉谷歌的东西。

4

2 回答 2

3

我会把我的评论变成答案:

这实际上很容易。使用numpy.genfromtxt()将数据加载到 numpy 数组中,然后您可以从numpy.fft中选择某种形式的 FFT 。

因为这是你的练习,所以我不会写下确切的代码,但基本上是总结了它。

于 2012-11-13T18:43:20.197 回答
2

要读取 .txt 文件,您需要执行以下操作(不是最快但最清晰):

column1 = []
column2 = []
infile = open("MyFile.txt", "r")
for l in infile.readlines():
    if l.strip():
        v1 = float(l.split()[0])
        v2 = float(l.split()[1])
        column1.append(v1)
        column2.append(v2)

对于 fft,请查看 numpy

于 2012-11-13T18:30:46.010 回答