IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Simulink Discussion :

Pb compilation MATLAB function avec persistent var


Sujet :

Simulink

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut Pb compilation MATLAB function avec persistent var
    Bonjour,

    Je rencontre actuellement un problème pour générer du code C à partir de mon modèle Simulink. J'ai localisé l'erreur qui se trouve dans deux blocs MATLAB function, dans lesquels sont déclarés deux variables en type persistent.
    Voici mon code pour un de ces blocs MATLAB function, il applique un filtre passe-bas sur mon entrée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    function filteredSignal = LowPassFilter(rawSignal)
    % Filter a raw signal using a Butterworth low pass filter 
    % Inputs:
    %    rawSignal - The raw signal
    % Outputs:
    %    filteredSignal - The filtered signal
     
    % Retain the values in memory between calls to the function
    persistent buffer;
    persistent counter;
     
    bufferSize = 10;
     
    if isempty(buffer)
        buffer = zeros(1, bufferSize);
        counter = 0;
    end
     
    % Add the rawSignal value to the buffer
    buffer = [rawSignal buffer(1:bufferSize - 1)];
    counter = counter + 1;
    if counter > bufferSize
        counter = bufferSize;
    end
     
    % Calculate the coefficients of a 2nd-order butterworth low pass filter
    % whose normalized cutoff frequency is 0.99*pi rad/sample
    [b, a] = butter(2, 0.99);
    % Filter the buffer
    filteredBuffer = filter(b, a, buffer(1:counter));
    % And take the mean of that
    filteredSignal = mean(filteredBuffer);
     
    % A guard for Nan and Inf values
    if isnan(filteredSignal) || isinf(filteredSignal)
        filteredSignal = rawSignal;
    end
     
    end
    Ma question est la suivante: par quoi pourrais-je remplacer le type persistent qui apparemment n'est pas compatible avec une compilation ?
    Pour info, je n'ai pas la toobox DSP System Toolox donc pas possible pour moi d'utiliser le bloc LowPass filter.

    Merci d'avance pour votre aide !

  2. #2
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 885
    Par défaut
    salut

    pour moi le problème ne viens pas de là, tu peux utiliser des variables persistante pour de la génération de cote
    exemple

    tu peux mettre l'erreur ici ?

Discussions similaires

  1. ''Interpreted MATLAB function'' avec 2 entrées
    Par atam1987 dans le forum Simulink
    Réponses: 6
    Dernier message: 17/10/2012, 13h16
  2. function avec Var
    Par tintin62 dans le forum Débuter
    Réponses: 3
    Dernier message: 21/08/2010, 00h47
  3. erreur avec (embedded matlab function)
    Par kadjuv dans le forum Simulink
    Réponses: 2
    Dernier message: 30/03/2010, 21h16
  4. Problème de compilation avec persistance
    Par felix79 dans le forum Eclipse Java
    Réponses: 11
    Dernier message: 28/07/2009, 16h08
  5. Réponses: 4
    Dernier message: 08/10/2007, 11h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo