如何在一维信号python中找到刺激区域的索引

问题描述 投票:0回答:1

我有一个一维信号,其中一些部分处于基线,一些部分由于刺激而处于更高的幅度。我想将受刺激的部分分开。 这是附加信号的图像 从图像中显示的信号中,我想获得受激信号的起点和终点。 可以使用以下代码生成信号

import numpy as np
import matplotlib.pyplot as plt
import random

def generate_random_decimal_array(start, end, size):
    random_array = [random.uniform(start, end) for _ in range(size)]
    return random_array

# Simulation parameters
fs = 200  # Sampling frequency (Hz)
t_total = 5  # Total simulation time (seconds)

# Time vector
t = np.linspace(0, t_total, int(fs * t_total), endpoint=False)

# Signal parameters
baseline_amplitude = 0.05
stimulus_amplitude = 0.75
stimulus_duration = 1  # Duration of the stimulus (seconds)
recovery_duration = 1  # Duration of the recovery period after stimulus (seconds)
num_stimuli = 3  # Number of stimulated regions

# Initialize signal with baseline noise
signal = baseline_amplitude * np.random.randn(len(t))

# Randomly choose start times for each stimulated region
stimulus_periods = []
for _ in range(num_stimuli):
    start = random.randint(0, len(t) - int(fs * (stimulus_duration + recovery_duration)))
    end = start + int(fs * stimulus_duration)
    stimulus_periods.append((start, end))

# Apply stimulus and recovery for each period
for start, end in stimulus_periods:
    signal[start:end] = generate_random_decimal_array(0.3, 1.5, (end - start))
    recovery_start = end
    recovery_end = recovery_start + int(fs * recovery_duration)
    signal[recovery_start:recovery_end] = baseline_amplitude * np.random.randn(recovery_end - recovery_start)

# Plot the simulated signal
plt.plot(t, signal)
plt.title('Simulated Signal with Multiple Stimuli')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.grid(True)
plt.show()
python signal-processing
1个回答
0
投票

鉴于您注入的噪声相对于信号幅度而言很小, 目前尚不清楚为什么您无法将两者分开。

总结目标:生成器产生的隐藏

stimulus_periods
应通过信号分析功能恢复。

有很多方法可以解决这个问题。

  1. 报告观察到的信号是否高于阈值 0.25。
  2. 使用平滑移动平均窗口(低通滤波器)清理信号,然后使用阈值。
  3. 使用中值窗口滤波器清理信号,然后阈值(这不会引入相位延迟)。
  4. 使用 SVM 或其他 ML 分类器技术。首先对标记数据进行训练,然后对一些新获得的观察结果进行推断。
  5. ruptures 为您解决变点检测优化问题 - 它内部有漂亮的数学,速度快,并且对噪声具有鲁棒性。
© www.soinside.com 2019 - 2024. All rights reserved.