2016-03-19 2 views
-1

J'apprends le traitement du signal et je dois actuellement faire un synthétiseur vocal dans Matlab. Pour imiter le système de résonateur de la bouche que j'ai cette fonction de transfert:Coefficients de filtre dans matlab

R (z) = 1 - z^(- 1)

Puis-je mettre en œuvre ce système avec la fonction de filtre dans Matlab? Je ne sais pas comment extraire les coeficients "a" et "b" ...

Note: y = filtre (b, a, x), où x est le signal d'entrée que nous devons filtrer.

Merci à tous!

+0

Il n'y a pas de coefficients 'a' ni' b' ici. – Adriaan

+0

donc, je ne peux pas faire cela avec "filtre"? – Kroka

+0

Aucune idée. Vous parlez de deux coefficients qui n'apparaissent nulle part ailleurs dans votre message. Vous pourriez aussi bien avoir dit que vous avez besoin de café et de cookies pour continuer, je ne vois pas dans votre message comment ils sont liés à votre problème (très peu clair) non plus. – Adriaan

Répondre

2

Consulter la documentation filter, vous représentez une fonction de transfert en fonction rationnelle des coefficients tels que:

enter image description here

La fonction de transfert désirée que vous voulez, Y(z)/X(z) = R(z) est égal à:

R(z) = 1 - z^{-1} 

Ici a(1) est implicitement égal à 1. Par conséquent, b(1) = 1 et b(2) = -1 faisant référence à l'équation ci-dessus . Tous les coefficients du dénominateur sont égaux à 0, sauf pour a(1) qui est égal à 1.

En tant que tel, a = 1; b = [1 -1]; et ainsi filtrer le signal est tout simplement:

a = 1; b = [1 -1]; 
y = filter(b, a, x); 

x est le signal d'intérêt que vous voulez filtre.

+1

Merci beaucoup! – Kroka

+0

Mais n'est-ce pas 'b (2) = -1'? –

+0

@MatthiasW. NON, C'EST PAS .... * Corrige rapidement *. Voir? Une illusion! (btw merci pour la correction :)) – rayryeng