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 :

Embedded MATLAB Function : Subscripting into an mxArray is not supported


Sujet :

Simulink

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 8
    Par défaut Embedded MATLAB Function : Subscripting into an mxArray is not supported
    bonjour;
    dans le cadre de mon projet d’implémentation d'un algorithme de reconnaissance des mots isoles sur une carte DSP,j'ai commencé par concevoir le block d'extraction des paramètres MFCC sous Simulink.
    j'ai utilise le block Embedded MATLAB Function
    voici mon code .m
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    function c  =mfcc2(s)
    % mfcc2: réécriture de l'algorithme MFCC
    % Entrees:
    %  s : signal de la parole a analyser
    %  fs : fréquence échantillonnage
    %  k: nombre de coefficients a creer
    % Sortie
    %  c : matrice des coefficients
     
    % variables:
    % p : nombre de filtre a creer dans le banc de
    %     filtres
    %p=floor(3*log(fs));
     
    eml.extrinsic('hamming');
    eml.extrinsic('enframe');
    eml.extrinsic('melbankm');
    eml.extrinsic('idct');
    eml.extrinsic('melcepst');
    eml.extrinsic('fft');
    eml.extrinsic('logarithme');
    eml.extrinsic('log');
    fs=11025;
    p=12;
    %n: taille des "frames" en échantillons optimale 
    %   (une puissance de 2, generalement n=256 ou n=512
    n=pow2(floor(log2(0.03*fs)));
    % fl,fh: fixent le debut (fl) et la fin (fh)
    % de la bande passante de fs a utiliser
    fl=0;
    fh=0.5; 
    % w: indique la fonction de ponderation a utiliser
    % ici 'M' => Hamming.
    w='m';
    % inc : duree de recouvrement des fenetres
    %  (les fenetres se recouvrent toutes les...)
    inc=floor(n/2);
    % creation des frames ponderees par Hamming
    z=enframe(s,hamming(n),inc);
    %[k,l]=size(z);
    % Premiere etape : f est la transorme rapide 
    % de Fourier de z
    f=fft(z.');
     
    % creation du banc de filtre
    % p : nombre de filtre a creer dans le banc de filtre
    % n : taille des frames en échantillons
    % fs : frequence d'echantillionnage du signal
    %      d'entree
    % fl, fh : fraction de fs a utiliser
    % w : type de fenetre de ponderation a utiliser.
    [m,a,b]=melbankm(p,n,fs,fl,fh,w);
    % m: matrice du banc de filtre
    % a et b sont les bornes de la partie utilisee dans f
    % on applique le banc de filtre au signal f (en fait
    % seulement a la partie delimitee entre a et b) par
    % un produit matriciel m * f
    % puis on prend le logarithme des coefficients.
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    %[y]=logarithme(f,m);
     
    y=log(m*(abs(f(a:b,:)).^2));
     
    % %%%y=log(m*(abs(f(a:b,:))));
    % 
    % % creation du cepstre en temps que tel:
    % % tranformee en cosinus discret reel:
    c=idct(y);
    Après l'exécution de mon code, Simulink m'a donne les erreurs suivantes:
    Subscripting into an mxArray is not supported.
    
    Function 'Embedded MATLAB Function' (#494.1789.1797), line 63, column 14:
    "f(a:b,:)"
    
    Undefined function or variable 'y'. The first assignment to a local variable determines its class.
    
    Function 'Embedded MATLAB Function' (#494.1929.1930), line 69, column 8:
    "y"
    svp aidez moi

  2. #2
    Membre Expert Avatar de lecteur1001
    Inscrit en
    Mai 2009
    Messages
    1 526
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 1 526
    Par défaut
    Je n'ai pas lu ton code en détails mais l'erreur dont tu parles est assez typique des embedded matlab function. En effet, plusieurs limitations par rapport à du code Matlab "classique" apparaissent. Par exemple, il est impossible de changer la classe et la taille d'une variable en cours de simulation. Là en l'occurence, j'ai l'impression que ton erreur te dit que tu souhaites changer la classe de la variable y, or c'est impossible.
    À lire avant de poster : qu'est ce qu'un ECM (Exemple Complet Minimal) ?
    Règles des forums LaTeX. Quand votre problème est réglé, mettez votre discussion en
    Pour débuter en LaTeX je conseille fortement Tout ce que vous avez toujours voulu savoir sur LaTeX sans jamais oser le demander (merci Woody Allen ), livre téléchargeable gratuitement ou en vente dans le commerce pour 15 €

Discussions similaires

  1. Subscripting into an mxArray is not supported.
    Par javjouv2011 dans le forum Simulink
    Réponses: 1
    Dernier message: 15/06/2012, 12h58
  2. [Embedded Matlab Function] Etablir un compteur
    Par berberat dans le forum Simulink
    Réponses: 1
    Dernier message: 28/09/2007, 10h36
  3. [Embedded Matlab Function] Problème d'utilisation
    Par berberat dans le forum Simulink
    Réponses: 1
    Dernier message: 21/09/2007, 15h27
  4. [Embedded MATLAB function] Comment ça fonctionne ?
    Par droledelolo dans le forum Simulink
    Réponses: 1
    Dernier message: 04/04/2007, 09h03
  5. [Embedded MATLAB Function] Type mxArray
    Par 250583 dans le forum Simulink
    Réponses: 2
    Dernier message: 28/03/2007, 15h31

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