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

MATLAB Discussion :

Convertir une fonction matlab


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 61
    Points : 40
    Points
    40
    Par défaut Convertir une fonction matlab
    Bonjour,

    je voulais savoir s'il était possible de convertir une fonction matlab en PHP/C ?
    Cette fonction est relativement courte mais n'étant pas familier avec Matlab je voudrais m'en assurer.

    La fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function ret = calc_success_probability(N, t, m)
    arr = zeros(1, t - 1);
    arr(1) = N * (1 - exp(-m/N));
    for i = 2 : t - 1
       arr(i) = N * (1 - exp(-arr(i-1)/N));
    end;
     
    ret = 1;
    for i = 1 : t - 1
       ret = ret * (1 - arr(i)/N);
    end;
    ret = 1 - ret;
    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    MATLAB n' a pas d'outil intégré pour convertir du code MATLAB en PHP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    Je m'en doute. Je me suis mal exprimé en fait. Je souhaite comprendre cette fonction (il en retourne donc un algorithme) pour ensuite pouvoir, par moi-même, l'utiliser en PHP.

    D'après ce que je vois il y a deux boucles mais pour le reste j'aurais besoin de vos lumières.

    Merci encore

  4. #4
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut !

    Chaque langage ayant ses spécificités, il n'est souvent pas judicieux de faire une traduction littérale. D'après mon expérience, le mieux serait d'abord de bien comprendre ce que fait ton programme MatLab, puis de le reprogrammer en PHP.

    Dans ton cas, la syntaxe de MatLab est très largement inspirée de celle du C. D'autre part, MatLab est en général très bien documenté: alors, si tu rencontres une fonction que tu ne connais pas, comme zeros(...,...), il te suffit d'aller dans le "help" et de chercher "zeros".

    Bon travail.
    Jean-Marc Blanc

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    Bonjour et merci pour ta contribution.

    Je ne souhaite pas faire une traduction (ce que mon premier message laissait faire entendre) mais une adaptation. C'est d'ailleurs pour cette raison que dans mon second message j'ai parlé d'un algorithme.

    Le fait que Matlab soit proche du C est une bonne nouvelle puisque le C est semblable au PHP.

    En ce qui concerne je vais suivre tes conseils et consulter la documentation en ligne.

    Merci encore.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    D'après les informations que j'ai pu lire, je comprends la fonction telle que :
    La fonction prend en paramètre 3 nombres : N, t et m
    On déclare la fonction

    On déclare ensuite une matrice de zéros de dimension (1, t-1)
    autrement dit un tableau de 1 ligne et de t-1 colonnes

    Pour la première ligne on calcule N * (1 - exp(-m/N))

    Pour i allant de 2 à t-1, la ligne i vaut N * (1 - exp(-arr(i-1)/N))

    << ret = 1; >>

    Pour i allant de 1 à t-1, ret = ret * (1 - arr(i)/N)
    Puis ret = 1 - ret;
    Mais je ne suis pas sûr de moi.

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    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 313
    Points : 52 927
    Points
    52 927
    Par défaut
    Citation Envoyé par hm1ch Voir le message
    Mais je ne suis pas sûr de moi.
    Apparemment, je comprends la même chose que toi . Sauf que les données sont stockées dans les colonnes de arr et non pas dans les lignes. Bon vu que arr est un vecteur (tableau 1xn), cela n'a pas beaucoup d'importance.

    Pour la déclaration de "arr = zeros(1, t - 1);", c'est une technique permettant de préallouer de la mémoire (voir la : Qu'est-ce que la préallocation de mémoire ?)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    Merci pour ton aide.
    Désolé pour l'allocation de mémoire mais ne sachant pas trop quoi chercher je ne pouvais pas trouver.
    Je vais aller consulter ce lien de ce pas et faire quelques tests.

    Merci encore.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    J'ai essayé de le faire dans un fichier XLS pour pouvoir modifier simplement les formules et pour avoir un apreçu des différents calculs pour chaque étapes de la boucle 'for' mais il doit y avoir un problème.
    Aucun résultat ne correspond au résultat que je suis censé avoir.
    Aurais-je oublié une étape, un calcul ?

    Merci encore une fois pour votre aide
    Fichiers attachés Fichiers attachés

  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 313
    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 313
    Points : 52 927
    Points
    52 927
    Par défaut
    Citation Envoyé par hm1ch Voir le message
    Aurais-je oublié une étape, un calcul ?
    Tu oublies de multiplier par ret dans la deuxième boucle (voir le fichier xls modifié).

    Résultat MATLAB :
    ret = 0.792349162
    Résultat Excel :
    ret = 0,792349162
    Fichiers attachés Fichiers attachés

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    Oh ! Il faut que j'ouvre les yeux moi lol
    Merci à toi (une fois de plus).

    Je pense que mon problème est maintenant résolu.
    Merci

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

Discussions similaires

  1. [Compiler] Utiliser une fonction MATLAB en C++
    Par SlySlayer dans le forum MATLAB
    Réponses: 6
    Dernier message: 23/08/2007, 08h35
  2. Problème ginput dans une fonction matlab
    Par matt67 dans le forum MATLAB
    Réponses: 12
    Dernier message: 05/06/2007, 15h24
  3. [intfilt] Convertir une fonction MATLAB en language C
    Par sandball22 dans le forum MATLAB
    Réponses: 10
    Dernier message: 10/04/2007, 16h06
  4. Exécution d'une fonction Matlab à partir de C++
    Par wassimb dans le forum MATLAB
    Réponses: 1
    Dernier message: 15/03/2007, 13h00
  5. convertir une fonction en predicat
    Par seb9999 dans le forum C++
    Réponses: 2
    Dernier message: 19/10/2006, 20h06

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