0

目标:我的目标是幂律分布的计算和显示。

Phyton 的输入:我提供的 Python 输入文件是 1 列的 .txt 文件。每个 .txt 文件都有一列从时间序列数据中提取的数值。我的脚本将 .txt 文件加载到 Python 中,然后在前者上应用 Welch 方法。结果是初始时间序列数据的功率谱。所有 23 个主题(.txt 文件)都被绘制成一张图像。

据我所知,我需要在功率谱的两个轴上应用对数来计算幂律分布。我有两个问题:

1.Python中似乎有很多方法(工具)可以计算幂律分布。基于我使用 Welch 而不是 FFT 的事实,您现在推荐什么方法来计算幂律分布?

2.是否可以根据我输入的时间序列数据直接计算幂律分布,或者我是否需要以将welch的输出(功率谱)作为最终创建幂律分布的输入?换句话说:如果我的目标只是显示幂律分布(而不是幂谱),我可以缩短我的代码甚至跳过 Welch 方法吗?

谢谢,菲利普

我当前使用 Welch 方法创建功率谱的代码如下所示。

# Initialize
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
from matplotlib.pyplot import cm

# Numpy.loadtxt – Loads data from a textfile.
# Scipy.signal.welch – Creation of the power-spectrum via welch method. f, Welch creates the ideal frequencies (f, Welch = Power Spectrum or Power Spectral Density)
Subjects = ["Subject1", "Subject2", "Subject3", "Subject4", "Subject5", "Subject7", "Subject8", "Subject9", "Subject10", "Subject11", "Subject12", "Subject13",
            "Subject14", "Subject15", "Subject16", "Subject17", "Subject18", "Subject19", "Subject20", "Subject22", "Subject23", "Subject24", "Subject25"]

for Subject in Subjects:
    Txt = np.loadtxt("/volumes/SanDisk2/fmri/dataset/processed/extracted_timeseriespython/restingstate/{0}/TimeSeries.SPC.Core_ROI.{0}.txt".format(Subject), comments="#", delimiter=None,
                         converters=None, skiprows=0, usecols=0, unpack=False, ndmin=0, encoding=None, max_rows=None, like=None)

    f, Welch = signal.welch(Txt, fs=1.0, window="hann", nperseg=None, noverlap=None, nfft=1024, detrend="constant", return_onesided=True, scaling="density", axis=-1, average="mean")

    Colormap = plt.get_cmap("plasma")
    Segment_Colormap = Colormap(np.linspace(0, 1, len(Subjects)))
    
    plt.plot(f, Welch, c=Segment_Colormap[Subjects.index(Subject)], linewidth=2.5)

    plt.show()

以下列是 Subject1 的输入数据的简化示例(.txt 文件输入)。

-0.315046 -0.0641514 -0.921697 -0.976516 -0.546322 -0.857073 -1.59524 -0.447158 0.559437 -0.0138681 0.308289 1.26514 1.4109 1.65135 0.70157 0.454801 1.20363 1.36459 0.26468 -0.487983 -0.181889 0.095632 -0.825288

4

0 回答 0