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 :

Trouver le nombre de combinaison dans une suite de chiffre


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Trouver le nombre de combinaison dans une suite de chiffre
    Bonjour à tous,

    Je suis sur un problème depuis hier et j'éssais de le résoudre avec de multiples boucles et itération mais en vain malheureusement, c'est trop long.

    J'ai une suite de chiffre de ce type : 4 3 2 8 2 4 3

    Et je souhaite savoir le nombre de sequences différentes dans cette suite et le nombre de fois ou elle est présente .

    Par exemple :

    4 : 2 x le nombre 4
    4 3 : 2 x cette séquence
    4 3 2 : 1 fois cette séquence
    4 3 2 8 : 1 fois cette séquence
    3 2 : 1 fois cette sequence

    et ainsi de suite ...

    Je ne sais pas si vous pouvez m'aider car je ne sais plus comment procéder pour résoudre la

    Merci d'avance``

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut Trouver le nombre de combinaison dans une suite de chiffre
    Bonjour,

    Une solution (avec boucles hélas !) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    M=[4 3 2 8 2 4 3];
    MC=num2str(M(:))';
    n=0;
    for j=1:length(M)
        for i=j:length(M)
            n=n+1;
            R(n,1)=str2num(MC(j:i));
            R(n,2)=length(strfind(MC,MC(j:i)));
     
        end
    end
    disp(R)

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 265
    Points : 352
    Points
    352
    Par défaut
    idée comme ça :
    ne serait-ce pas plus simple de tout convertir en string et d'utiliser les fonction de recherche de substring?

  4. #4
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour

    Merci pour votre aide. La fonction marche mais j'ai du mal à l'insérer dans une boucle :-( J'ai une erreur que je n'arrive à résoudre .

    En fait, j'ai plusieurs lignes:

    sujet A : 1 3 7 6 9 8 5 3
    sujet B : 1 3 4
    sujet x: 1 9 8 6 3 0 9 2 8 27

    et comme précédemment , je cherche à connaitre le nombre des différentes combinaisons non seulement pour chacun des sujets mais aussi pour l'expérience en entier

    Voici mon code

    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    clear all
    % Ouverture fu fichier des fréquences de pattern %
     
    [Frequence PILOTE]= xlsread('pilote.xlsx');
     
     % Creation du fichier de sortie
     
    mult=size(PILOTE);
    a=1;
    compt=1;
    pilote1=1;
    pilote2=2;
     
     
    for i=1:mult
     
    %     groupe(1,a)=PILOTE(i,1);
    %     a=a+2;
    %     i=i+1;
     
     
     
     
        % Recherche du nombre d'elements pour le pilote
     
        M=Frequence(compt,:);
        MC=num2str(M(:))';
        n=0;
     
        for j=1:length(M)
            for i=j:length(M)
                n=n+1;
                R(n,1)=str2num(MC(j:i));
                R(n,2)=length(strfind(MC,MC(j:i)));
     
            end
        end
        disp(R);
        displays=sortrows(R,-2);
     
        % Recherche des éléments unique et concaténation
     
        taille=size(R);
        i=1;
        k=1;
     
     
        for i=1:taille(1);
            if displays(i,1)>111                 % AU moins 3 instruments
                if displays(i,2)>3;              % Au moins 3 fois par pilote
                      sortie(k,1)=displays(i,1);
                      sortie(k,2)=displays(i,2);
                      unicite(k,1)=displays(i,1);
                  k=k+1; 
                end
            end
     
        end
     
        uv=unique(unicite);
        i=1;
        j=1;
        l=size(sortie);
        ll=size(uv);
     
     
     
        for i=1:ll(1);
            tab(i,1)=uv(i);
            for j=i:l(1);
                if tab(i,1)==sortie(j,1)
                    tab(i,2)=sortie(j,2);
                end
                j=j+1;
            end
        end
     
        tab2=sortrows(tab,-2);  % Affichage principales occurences en fonction des circuits visuels
     
     
    % Creation du fichier de sortie final
     
     
        i=1;
        j=2;
            for i=1:ll
            groupe(j,pilote1)=tab(i,1);
            groupe(j,pilote2)=tab(i,2);
            j=j+1;
            end
     
        pilote1=pilote1+1;
        pilote2=pilote2+1;
     
        compt=compt+1;
    end
    Je ne suis pas un spécialiste de la programmation, soyez indulgent :-)

    Merci de votre aide en tout cas
    Fichiers attachés Fichiers attachés

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,
    La solution que je t'ai indiquée ne fonctionne que pour des valeurs entières inférieures à 10.
    Pour vérifier essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Frequence PILOTE]= xlsread('pilote.xlsx');
    Frequence(Frequence==10)=9;

  6. #6
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    En fait la valeur max est bien 10 ( désolé pour le 17 dans mon exemple ).

    Quand j'exécute, j'ai cette erreur :

    Assignment has more non-singleton rhs dimensions than non-singleton subscripts
    
    Error in Frequence_pattern (line 33)
                R(n,1)=str2num(MC(j:i));
    La je ne m'y connais pas assez :-(

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut Trouver le nombre de combinaison dans une suite de chiffre
    Bonjour,

    Solution pour tout nombre entier :
    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
    M=[4 3 2 8 2 4 3 4 4 4 10 30 30 10];
    L=length(M);
    n=0;
    R2=zeros(100,L);
    for j=1:L
        for i=j:L
            n=n+1;
            w=num2str(M(j:i));
            R1(n,1:length(w))=w;
            x=strfind(M,str2num(w));
            R2(n,1: length(x))=x;
            R3(n,1)=length(x);
        end
    end
     v(:,1)=num2str(R3);
     v(:,2)=' ';
     
     RR=[v,R1] % Résultat

Discussions similaires

  1. Trouver le nombre de voyelles dans une chaîne
    Par asma ch dans le forum x86 16-bits
    Réponses: 1
    Dernier message: 09/08/2016, 20h36
  2. Réponses: 4
    Dernier message: 13/04/2016, 18h25
  3. [AC-2007] Eliminer doublons dans une suite de chiffres séparés par des virgules.
    Par benji971 dans le forum VBA Access
    Réponses: 7
    Dernier message: 31/07/2015, 13h35
  4. Réponses: 6
    Dernier message: 08/01/2014, 14h26
  5. [MySQL] comment trouver le nombre d'éléments dans une sgbd
    Par Bathou dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/06/2008, 17h29

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