2015-11-19 74 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倍 - 載波通常具有較高的頻率,因爲如果載波和調製器具有相似的頻率,接收器很難重建信息(在您的情況下爲餘弦波)。