2015-08-19 6 views
3

Je souhaite supprimer une fonction de saut (saut, Heaviside) à partir d'une donnée de série chronologique, comme indiqué sur l'image. Quelqu'un pourrait-il donner quelques indices (ou références) sur la façon de le faire?comment déconvoluer une fonction pas-à-pas du signal de série chronologique

Le lien vers l'image est: Multichannel signal convoluted by heaviside functions

Linked Image

données de canal Un échantillon est disponible à l'adresse: Sample, one Channel of the dataset

+0

J'ai ajouté l'image liée en votre nom. –

+0

@SteveBarnes merci! J'ai mis à jour le lien avec un seul canal de données. – liubenyuan

Répondre

0

Depuis convolution est la multiplication dans le domaine fréquentiel déconvolution doit être division. La transformée de Fourier de l'heaviside est 1/jw, donc vous voudriez diviser avec ceci (c'est-à-dire multiplier avec jw). Maintenant, la transformée de Fourier inverse de jw est la dérivée de la distribution de dirac. Donc, vous devriez convoluer avec la dérivée de la distribution de dirac.

Dans le cas discret dérivé de celui-ci est 1 pour k=0 et -1 pour k=1 et zéro ailleurs

def deconv(seq): 
    prev = 0 
    for cur in seq: 
     yield cur - prev 
     prev = cur 

Je ne vois aucune raison pour laquelle le résultat ne doit pas être unique.

+0

mais le décalage temporel, ainsi que le nombre de fonctions de Heaviside sont inconnus, c'est-à-dire u_i (t-tau). – liubenyuan

+0

Vous ne l'avez pas mentionné dans la question, mais bien sûr, le résultat n'est pas unique. Vous allez vous retrouver avec un décalage horaire inconnu. Sans plus d'informations, il restera inconnu. – skyking

+0

Je suis désolé pour les informations manquantes. J'ai mis à jour la publication et ajouté une série chronologique de signaux d'échantillons. Merci quand même! – liubenyuan