生成用余弦调制的正弦波

时间:2015-11-19 04:31:22

标签: python signal-processing

出于研究目的,我正在尝试重新创建以下内容(注意我是信号处理的新手):

  睡眠轴由长度大于500毫秒且频率在12至14赫兹频带内的正弦波定义。因此,睡眠轴模板由用余弦调制的13Hz正弦波定义(其中1/2周期是模板的长度)。模板的长度设置为1秒。这定义了一个以13 Hz为中心的带通滤波器。

引用:Poiseau,E。& Jobert,M。(1991)。 匹配滤波应用于睡眠中的心轴和k-复合物的检测。 http://documents.irevues.inist.fr/bitstream/handle/2042/11699/AR2_30.pdf?...1

这应该是什么样子的例子在上面的论文的图1中。我已经包含了下图的截图: Sleep Spindle

这是我到目前为止的一些代码。这只会产生正弦波:

import numpy as np
import matplotlib.pyplot as plt

def sleep_spindle_match(sampling_freq):
    freq = 13 #Hz

    x = np.arange(0,1,1.0/sampling_freq)
    sine = np.sin(2 * np.pi * freq * x + (np.pi/2))

    spindle = {'x':x, 'sine':sine}

    return spindle



x = sleep_spindle_match(44100)
plt.plot(x['x'], x['sine'])
plt.show()

但是,我不知道“用余弦调制”意味着什么,或者如何实现它。任何以半拉式术语解释这一点的帮助都将非常感激。

我的最终目标(超出此范围)是创建一个匹配过滤器,上面作为模板。这是另一个故事。

2 个答案:

答案 0 :(得分:1)

他们谈论的是(振幅)modulation。调制是发生在高频信号上的低频(慢)变化的过程。前者称为information signal,后者称为carrier signal

看着你的照片,很明显他们想要一个高频正弦波,通过余弦波调幅(随时间缓慢变化)。

因此,调制信号只是一个正弦波,幅度为余弦函数:

def get_signal_func(carrier_freq, carrier_phase0, signal_freq, signal_phase0):
    def signal(x):
        amplitude = math.cos(signal_freq*x + signal_phase0)
        return apmlitude * math.sin(carrier_freq*x + carrier_phase0)
    return signal

可能它在numpy(示例)中的外观如何:

signal = np.cos(freq*x + (np.pi/2)) * np.sin(100*freq*x + (np.pi/2))

请注意,正弦频率是余弦频率的100倍 - 载波通常具有更高的频率,因为如果载波和调制器具有相似的频率,接收机很难重建信息(在您的情况下是余弦波) )。

答案 1 :(得分:1)

我的阅读是,在给定1s x轴的情况下,13Hz正弦波由0.5Hz余弦波缩放。只需乘以样本即可。

import numpy as np
import matplotlib.pyplot as plt

def sleep_spindle_match(sampling_freq):
    freq = 13 #Hz

    x = np.arange(0,1,1.0/sampling_freq)
    y = np.sin(2 * np.pi * freq * x + (np.pi/2)) * np.cos(np.pi * x + (np.pi/2))

    spindle = {'x':x, 'y':y}

    return spindle



x = sleep_spindle_match(44100)
plt.plot(x['x'], x['y'])
plt.show()