Bonjour,
Dans le cadre d'un projet d'électronique numérique, je cherche à implémenter une partie d'un algorithme sur une carte Nexys-3, je voudrais garder les calculs des variables sur machine et effectuer un filtrage sur carte.
Pour cela je dois réaliser un filtre d'ordre 4 sous simulink composé de deux filtres d'ordre 2 en série.
Je dois donc prendre un signal aléatoire du workspace de MATLAB, le faire passer dans mon filtre simulink et en récupérer la sortie.
Voici le filtre en question, où a1..bn sont les coefficients de mes deux filtres:
Mon schéma dispose de deux blocs: -From Workspace -To Workspace afin de récupérer mon signal x_simulink en entrée et de sauvegarder les données dans une variable x_f.
Afin que le filtrage s'effectue j'utilise ces deux commandes :
open('tfremovePLI.slx');
sim('tfremovePLI.slx','SrcWorkspace','current');
Et il se trouve que je ne récupère finalement rien en sortie du filtre, x_f reste le même qu'après sa déclaration : x_f=zeros(1,N);
Je calcule les coefficients de mon filtre à partir des deux fonctions suivantes:
h = fdesign.bandpass('N,F3dB1,F3dB2', ordr, Fc1, Fc2, fs);
Hd = design(h, 'butter');
A priori le problème ne vient pas de la conception selon moi mais plutôt du transfert entre les différents workspace: x_f ne s'enregistre pas dans le workspace du programme.
Mes paramètres de simulation sont ceux-ci, avec fs la fréquence d’échantillonnage.
Je travaille avec MATLAB 2013B
Est-ce que quelqu'un aurait une idée de comment résoudre ce problème ?
Merci d'avance,
Cordialement,
Tnaidu
Partager