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

Lazarus Pascal Discussion :

Connexion entre MATLAB et Lazarus


Sujet :

Lazarus Pascal

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Points : 2
    Points
    2
    Par défaut Connexion entre MATLAB et Lazarus
    Bonjour à tous,

    dans le cadre d'un programme de traitement audio, je dois extraire les données de fichiers wav sous forme de fichiers texte. Pour cela j'utilise Matlab avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [y, Fs] = wavread('piano.wav')
    Mono = (y(:,1)+y(:,2))/2;
    Mono=resample(Mono,2500,44100)
    save('piano.txt','Mono','-ASCII')
    Jusqu'à présent j'avais constitué une bibliothèque de fichiers texte, que je traitais ensuite sous Lazarus. J'aimerais cependant maintenant pouvoir exécuter le programme à partir de n'importe quel fichier wav, sans toutefois avoir à lancer Matlab indépendamment avant. J'ai donc trouvé le code suivant qui devrait me permettre de lancer le traitement Matlab directement à partir de Lazarus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.Button1Click(Sender: TObject);
     
    var nf:string;   MatApp:variant;
    begin
    MatApp:=CreateOleObject('matlab.application');
    MatApp.visible:=1;
    nf:='FilenameEdit1.text';
    MatApp.Execute('[y, Fs] = wavread(nf) Mono = (y(:,1)+y(:,2))/2; Mono=resample(Mono,2500,44100) save(''piano.txt'',''Mono'',''-ASCII'') ');
     
    end;
    Cependant, en testant rien ne se passe, et l'historique de Matlab affiche seulement une ligne de commentaire (%-- 11/05/2012 22:20 --%) sans aucune ligne de commande.

    Si quelqu'un pouvait m'aider à trouver mon erreur
    Merci d'avance!

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 859
    Points : 11 307
    Points
    11 307
    Billets dans le blog
    6
    Par défaut
    une piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nf:='FilenameEdit1.text';
    MatApp.Execute('[y, Fs] = wavread(' + nf + ') Mono = (y(:,1)+y(:,2))/2; Mono=resample(Mono,2500,44100) save(''piano.txt'',''Mono'',''-ASCII'') ');
    tu avais inclu le nom de la variable en dur dans la chaîne (mais ce n'est pê qu'une erreur de recopie
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse

    Le problème ne semble cependant pas provenir de là car j'avais déjà essayé dans utiliser la variable nf (en mettant directement le nom d'un wav du dossier courant de Matlab) et cela ne marchait pas non plus..

    Pour ce qui est des simple quote incluses dans celles de MatApp, j'en ai mis deux de suite pour qu'il les prenne en compte, est-ce bien la bonne méthode ?

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 859
    Points : 11 307
    Points
    11 307
    Billets dans le blog
    6
    Par défaut
    ce peut être aussi un pb de lignes qui doivent être séparées par des #10#13 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    tsl:=TStringList.Create;
     
    tsl.Add( [y, Fs] = wavread(''piano.wav'') ); // ou tsl.Add( QuotedStr( [y, Fs] = wavread('piano.wav') );
    tsl.Add( Mono = (y(:,1)+y(:,2))/2; );
    tsl.Add( Mono=resample(Mono,2500,44100) );
    tsl.Add( save(''piano.txt'',''Mono'',''-ASCII'') ); 
     
    MatApp.Execute( tsl.Text );
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    Ça ne marche pas non plus. En laissant MatApp.visible à 1 la fenêtre Matlab Command Window apparaît mais aucune commande n'est faite, et en mettant à 0 rien ne se passe..

    On est bien d'accord, je dois déclarer la variable MatApp:variant au début du programme ?
    J'ai aussi essayé en mettant des double quote pour les expressions à l'intérieur même des String mais ce n'est pas mieux.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Normalement, il y a plus simple.

    Enregistre ton code dans une fonction sous MATLAB dans un fichier myfun.m :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function myfun(nf)
     
    [y, Fs] = wavread(nf)
    Mono = (y(:,1)+y(:,2))/2;
    Mono = resample(Mono,2500,44100)
     
    nf = strrep(nf,'.wav','.txt');
     
    save(nf,'Mono','-ASCII')
    Tu peux ensuite, en te plaçant dans le dossier contenant myfun.m, lancer à partir d'une ligne de commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matlab -r "myfun('FilenameEdit1.text')"
    Il ne te reste plus qu'à écrire et faire exécuter automatiquement cette commande sous Lazarus.

    Tu peux ajouter la fonction quit à la fin de la fonction pour fermer automatiquement MATLAB.

    Tu peux aussi accélérer le chargement de MATLAB en utilisant l’argument -nodesktop (voire -nojvm) en plus de l’argument -r

    Plus d'information dans la documentation de MATLAB : Startup Options
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse

    J'ai créé le fichier myfun.m et l'ai mis dans le dossier de mon projet. Mais ensuite je ne vois pas ce que je dois écrire dans Lazarus. Ce que tu me donnes est une invite de commande non ? Comment la mettre dans Lazarus ?

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 52 882
    Points
    52 882
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    J'ai mis ça sous Lazarus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Button1Click(Sender: TObject);
    var Processus:TProcess;
    begin
      Processus := TProcess.Create(Nil);
      Processus.CommandLine := 'matlab -r "myfun('+FilenameEdit1.text+')"';
      Processus.Options := Processus.Options + [poWaitOnExit];
      Processus.Execute;
      Processus.Free;
    end;
    Cependant, Matlab s'ouvre bien mais il n'exécute pas myfun. Qu'est-ce que j'ai oublié ?

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 52 882
    Points
    52 882
    Par défaut
    As-tu essayé directement en ligne de commande sous ton système d'exploitation et non pas avec Lazarus ?

    Es-tu placé dans le bon répertoire ?

    Sinon, es-tu sûr de vouloir passer le fichier txt en entrée de la fonction ?
    Ne serait-ce pas plutôt un fichier wav ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    J'ai essayé directement sous Windows et ça marche en remplaçant le TFileNameEdit par 'accordeon.wav' directement. En faisant de même sous Lazarus ça ne fonctionne pas cependant. Je pense donc que c'est un problème de quote, je ne sais pas s'il reconnait les deux expressions incluses dans la 1ère en tapant ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Processus := TProcess.Create(Nil);
      Processus.CommandLine := 'matlab -r ''myfun(''accordeon.wav'')''';
      Processus.Options := Processus.Options + [poWaitOnExit];
      Processus.Execute;
      Processus.Free;
    J'ai essayé de mettre le nom du fichier en variable string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     var nf:string;  
      Processus := TProcess.Create(Nil);
      Processus.CommandLine := 'matlab -r ''myfun('+nf+')''';
      Processus.Options := Processus.Options + [poWaitOnExit];
      Processus.Execute;
      Processus.Free;
    Ça me crée alors une variable 'ans' sous Matlab avec comme valeur "myfun(accordeon.wav)" sans rien exécuter ensuite.

  12. #12
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 859
    Points : 11 307
    Points
    11 307
    Billets dans le blog
    6
    Par défaut
    apparemment, les fonctions sont entre " et pas entre ' doublées, mais les arguments des fonctions entre '
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Processus.CommandLine := 'matlab -r "myfun(''' + nf + ''')"';
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    Ça marche !

    Merci beaucoup à tous les deux
    Bon dimanche!

  14. #14
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Il te reste juste à renommer la fonction et le fichier MATLAB avec un nom plus explicite que "myfun"
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    Re-bonjour !

    Ayant modifié un peu mon programme, je suis maintenant confronté à un nouveau problème.

    Je m'explique. Avec cette ligne de commande, Matlab doit enregistrer dans un fichier texte les données d'un fichier audio. Ces données sont ensuite lues et utilisées afin de créer la classe CTableau. Cependant, pour un morceau de plusieurs minutes le traitement est assez long, et en lançant le programme Lazarus affiche un message d'erreur car il ne peut créer T:CTableau puisqu'il ne peut extraire les données du fichier texte encore inexistant.

    Comment pourrais-je alors savoir si Matlab a fini son traitement afin de pouvoir lancer la création de T ? J'ai cherché du côté des options au démarrage du TProcess et de ses propriétés mais en vain..

    Avez-vous une idée ?
    (Un sleep d'une durée déterminée serait quand même assez moche... )

  16. #16
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 859
    Points : 11 307
    Points
    11 307
    Billets dans le blog
    6
    Par défaut
    MatLab rendrait la main alors qu'il n'a pas fini ?

    Ou alors le fichier n'a pas fini de s'écrire...

    Dans ce cas, j'ai déjà vu utiliser la solution de regarder la taille du fichier dans un Timer, et de sortir dès qu'elle ne bouge plus.

    Mais il y a pê plus élégant...
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  17. #17
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    Oui. En fait le processus.execute lance matlab en lui donnant la ligne de commande (la fonction dans le .m), puis passe à la ligne commande dans le programme, donc la création de T, sans se préoccuper de ce que fait Matlab à côté..

    J'avais pensé faire un contrôle sur le fichier, notamment son existence, mais ça empêcherait la réutilisation du programme, le fichier créé étant unique ("perso.txt"). De plus, un contrôle sur le nombre de lignes comme tu proposés est impossible étant donné que Matlab écrit dans le fichier texte une fois tout mis en variable, soit à la fin.*

  18. #18
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 859
    Points : 11 307
    Points
    11 307
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par mewiine Voir le message
    Ayant modifié un peu mon programme, je suis maintenant confronté à un nouveau problème.
    Avec cette ligne de commande, Matlab doit enregistrer dans un fichier texte les données d'un fichier audio. Ces données sont ensuite lues et utilisées afin de créer la classe CTableau.

    Comment pourrais-je alors savoir si Matlab a fini son traitement afin de pouvoir lancer la création de T ?
    Comment l'as-tu modifié ? La fonction ? Ou en enchaînant l'appel à une 2° fonction dans un nouveau Process ?

    Si Matlab ne peut attendre dans une fonction qu'une action soit complétée avant de passer à la suivante, c'est qu'il faut faire 2 fonctions dont les lancements sont séparés par un contrôle d'exécution de la première.

    Et faire une boucle qui guette l'arrivée et la complétude d'un fichier n'a rien de non réutilisable, à mon sens.

    Il nous faudrait sûrement un peu de code pour orienter notre réflexion.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    Voilà la procédure posant problème :

    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
    procedure TForm1.FileNameEdit1Change(Sender: TObject);    //Sélection fichier perso
    var Processus:TProcess; 
    begin
      TabControl1.Visible:=True;
      Processus := TProcess.Create(Nil);
      Processus.CommandLine := 'matlab -r "CreaWavTexte('''+FileNameEdit1.text+''')"';
      Processus.Options := Processus.Options + [poWaitOnExit];
      Processus.Execute;
      Processus.Free;
      if (Combobox1.ItemIndex<>-1) then ComboBox1.ItemIndex:=-1
      else CreationT;
      refresh;
      AfficherGraphe;
     
    end;
    Et le contenu de CreaWavTexte.m :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function CreaFichTexte(nf)
     
    [y, Fs] = wavread(nf)
    Mono = (y(:,1)+y(:,2))/2;
    Mono = resample(Mono,2500,44100)
     
    cd E:\INSA\2A\Info\Projet\Sons
     
    save('Perso.txt','Mono','-ASCII')
    quit
     
    end
    Donc en gros il passe à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (Combobox1.ItemIndex<>-1) then ComboBox1.ItemIndex:=-1
      else CreationT;
    sans que Matlab n'ait crée Perso.txt, d'où l'erreur.

  20. #20
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Je n'ai pas la réponse à ton problème, mais j'ai plusieurs corrections à apporter au code MATLAB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function CreaFichTexte(nf)
     
    y = wavread(nf);
    Mono = (y(:,1)+y(:,2))/2;
    Mono = resample(Mono,2500,44100);
     
    save(fullfile('E:\INSA\2A\Info\Projet\Sons','Perso.txt'),'Mono','-ASCII')
    quit
    
    end
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

Discussions similaires

  1. Connexion entre MATLAB et un automate
    Par Amaury63 dans le forum MATLAB
    Réponses: 2
    Dernier message: 31/05/2013, 13h15
  2. Connexion entre MATLAB et OpenCV
    Par Limam12 dans le forum OpenCV
    Réponses: 3
    Dernier message: 22/10/2012, 13h50
  3. Problème de connexion entre MATLAB et PostgreSQL
    Par si_a7med dans le forum MATLAB
    Réponses: 1
    Dernier message: 01/04/2011, 16h01
  4. connexion entre matlab et visual studio.net
    Par imene_t1 dans le forum C#
    Réponses: 1
    Dernier message: 30/09/2007, 23h52

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