2015-11-19 22 views
0

对于研究目的调制正弦波,我试图重建下述(注意我是新的信号处理):产生具有余弦

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

引用:Poiseau,E. & Jobert,M.(1991)。 匹配滤波适用于检测睡眠eeg中的主轴和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() 

但是,我不知道什么手段或如何“用余弦调制”去有关实现这一点。我们将非常感谢以半拉曼的形式解释这一点的任何帮助。

我的最终目标(此外)是创建一个匹配过滤器与上述作为模板。但这是一个完整的其他故事。

+0

这听起来不像一个编程问题。 – saulspatz

回答

0

我的读数是13Hz正弦波由0.5Hz余弦波定标,给定1s轴。只是乘以样品。

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() 
0

他们正在谈论(振幅)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倍 - 载波通常具有较高的频率,因为如果载波和调制器具有相似的频率,接收器很难重建信息(在您的情况下为余弦波)。