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

Signal Discussion :

Problème pour concaténer des signaux


Sujet :

Signal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 24
    Points : 18
    Points
    18
    Par défaut Problème pour concaténer des signaux
    Bonjour tout le monde!

    Voila j'aimerais concatener plusieurs signaux qui sont des zeros et des uns. Je lis mes données a partir d'un fichier dont les deux premieres colonnes correspondent a mes intervalles et la troisieme a la valeur que doit prendre le signal!!

    voici mon programme:
    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
    clear all
    close all
     
    fid = fopen('/tmp/u014_fvi6/silence','r');
       x = textscan(fid,'%d %d %d');
    fclose(fid);
     
    x1 = double(x{1});
    x2 = double(x{2});
    x3 = double(x{3});
     
    n = size(x1);
     
     
    for i=1:n(1)
         if x3(i) == 0
         {
               a = x2(i)-x1(i)
               s_int = zeros(1,a);
               f = [s,s_int];
               s = f;
         }
         elseif x3(i) == 1
         {
               s_int = ones(1,x2(i)-x1(i))
               f = [s,s_int];
               s = f;
          }
          end	
    end
     
    plot(s);
    et enfin voici le message d'erreur qui apparait...
    ??? Error: File: /projet_2/silence.m Line: 18 Column: 3
    The expression to the left of the equals sign is not a valid target for an assignment.
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Quelques conseils :
    • Pense à utiliser les balises (bouton#) c'est plus lisible.
    • Pense aussi à indenter ton code (CTRL+A, CTRL+I sous l'éditeur de Matlab)
    Pour l'erreur :
    Les accolades {} sous Matlab c'est pour l'indexation des cellules (comme dans x{1}) il n'yen a pas pour faire les blocs if...

    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if x3(i) == 0
    {
    a = x2(i)-x1(i)
    s_int = zeros(1,a);
    f = [s,s_int];
    s = f;
    }
    devient ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if x3(i) == 0
     a = x2(i)-x1(i)
     s_int = zeros(1,a);
     f = [s,s_int];
     s = f;
    Par contre le message d'erreur n'est pas très explicite il faut l'avouer.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    AArrgg je me tuerais pour ce genre d'erreur bête ... Comme je bosse sur 3 langages differents je me plante souvent dans les notations...

    ok c'est bon ca marche...

    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 309
    Points : 52 895
    Points
    52 895
    Par défaut
    Citation Envoyé par caro95470
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if x3(i) == 0
     a = x2(i)-x1(i)
     s_int = zeros(1,a);
     f = [s,s_int];
     s = f;
    Et plus simplement, sans les variables intermédiaires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if x3(i) == 0
     a = x2(i)-x1(i)
     s = [s zeros(1,a)];
    ou, encore plus direct dans ce cas précis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if x3(i) == 0
     a = x2(i)-x1(i)
    s(end+a)=0
    A noter : s doit être définie avant la condition. Si ce n'est pas le cas, il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    s=[];
    for i=1:n(1)
       <...>
    end

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de syntaxe pour concaténer des variables
    Par renaud26 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/09/2006, 09h44
  2. [win] problème pour partager des fichiers entre 2 pc
    Par goma771 dans le forum Administration
    Réponses: 1
    Dernier message: 01/12/2005, 16h15
  3. [XML word] problème pour créer des puces
    Par ratapapa dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 21/07/2005, 13h52
  4. Problème pour Télécharger des fichiers
    Par joce3000 dans le forum C++Builder
    Réponses: 8
    Dernier message: 21/01/2005, 10h30
  5. problème pour faire des blocs
    Par tinkye_winkye dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 04/01/2005, 14h13

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