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 :

utilisation de la fonction "deconv" avec des inconnues


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Points : 23
    Points
    23
    Par défaut utilisation de la fonction "deconv" avec des inconnues
    salut,
    comment puis-je ressourdre cette opperation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    syms  a
    A=[a^4 a^5 a^2];  %A='a^4*x^2+a^5*x+a^2=0'
    B=[a^2 a^4 a^5];  %B='a^2*x^2+a^4*x+a^5=0'
     
    [q,r] = deconv(A,B)
    la valeur de "a" reste inconnue

    merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Points : 100
    Points
    100
    Par défaut
    Tu cherches a calculer la déconvolution (je ne sait pas si cela se dit ^^ ) de A par B avec un terme inconnu (a), c'est bien cela?

    Pourquoi cherches-tu a réaliser cette opération (simple curiosité)?

    La fonction deconv ne fonctionne pas avec des argument de type syms, il va donc falloir trouver une alternative.

    NB : attention tu as réaliser une faute de frappe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    B=[a^2 a^4 a^5];  %B='a^2*x^2+a^4*x+a^5=0'

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Salut Chris,
    j'ai besoin de se calcul pour realiser le codage systematique du Reed Salomon code selon la formule: (i(x)*x^m)/g(x)=r(x)+q(x)
    r:reste
    q:quoitien
    a(x)=-r(x)+i(x)*x^m

    dans ma question A(x)=i(x) et B(x)=g(x)

    j'espere que tu comprends maintenant pourquoi j'ai besoin de cela.

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Salut,

    pourquoi as-tu besoin de l'expression symbolique de ton résultat? que veux-tu en faire après?

    C'est bien la division de tes 2 polynômes que tu veux effectuer? Si c'est l'unique calcul que tu dois faire, tu peux toujours chercher le résultat à la main, ce n'est pas très compliqué.

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    le resultat doit etre en fonction de "a", par exemple:a*x^3+a^4*x^2+a^7+1, il revient a l'utilisateur plus tard de remplacer a par la valeur reel qu'il veut.C'est une sorte de resultat general.
    J'ai besoin de cette formule pour effectuer plusieurs calculs.

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    En fait ma question était : est-ce que les forme de tes equations A et B peuvent changer ou bien elles seront toujours de la forme :
    quelquechose*x^2+quelquechose*x+a quelquechose

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    l'equation sera toujours sous cette forme, j'ai pu trouver une autre fcon de faire un calcul pour le non systematique codage, mais cela m'a fait ecrire un m-file de 18MB, l'a encore j'avais juste de multiplication.
    J'ai besoin de ca pour plusieur calcul en fonction des erreurs qui vont de o à 31, donc tu comprends pourquoi le ficher est tres grand, c'est a cause de la transformation en binaire ,l' exemple ci dessous n'est que pour une erreur.

    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
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
     
    function codierung_Callback(hObject, eventdata, handles)
    % hObject    handle to codierung (see GCBO)
    r17= get(handles.radiobutton17,'Value');
    r18= get(handles.radiobutton18,'Value');
    r19= get(handles.radiobutton19,'Value');
     
     
     
     
     
                                               %GF(2^3) ist gewählt
    if r17==1
                                            %Anzahl der Fehler wird gelesen
    E = str2double(get(handles.E,'String'));
     
                                    %Je nach Wert von E vird ein Fall durchlaufen
     
     
     
     if E == 1
       syms a;
         i0 = get(handles.i0,'String');
         i1 = get(handles.i1,'String');
         i2 = get(handles.i2,'String');
         i3 = get(handles.i3,'String');
         i4 = get(handles.i4,'String'); 
     
     
     
     
     
         g00=a^3*i0;
         g10=a^4*i0;
         g11=a^3*i1;
         g20=a^0*i0;
         g21=a^4*i1;
         g22=a^3*i2;
         g31=a^0*i1;                                   %Festlegung von g(x)
         g32=a^4*i2;
         g33=a^3*i3;
         g42=a^0*i2;
         g43=a^4*i3;
         g44=a^3*i4;
         g53=a^0*i3;
         g54=a^4*i4;
         g64=a^0*i4;
     
     
        g00=char(g00);
     
        if strcmp(g00, '0')
                     ii0=[0 0 0];
        end
        if strcmp(g00, '1') 
                     ii0=[0 0 1];
        end
        if strcmp(g00, 'a^0') 
                     ii0=[0 0 1];
        end
        if strcmp(g00, 'a^1') 
                     ii0=[0 1 0];
        end
        if strcmp(g00, 'a^2')
                     ii0=[1 0 0];
        end
        if strcmp(g00, 'a^3') 
                     ii0=[0 1 1];
        end
        if strcmp(g00, 'a^4') 
                     ii0=[1 1 0];
        end
        if strcmp(g00, 'a^5') 
                     ii0=[1 1 1];
        end
        if strcmp(g00, 'a^6') 
                     ii0=[1 0 1];
        end
        if strcmp(g00, 'a^7') 
                     ii0=[0 0 1];
        end
        if strcmp(g00, 'a^8') 
                     ii0=[0 1 0];
        end
        if strcmp(g00, 'a^9') 
                     ii0=[1 0 0];
        end
        if strcmp(g00, 'a^10') 
                     ii0=[0 1 1];
        end
     
        %*******************************
        g10=char(g10);
     
        if strcmp(g10, '0')   
                     ii10=[0 0 0];
        end
        if strcmp(g10, '1')  
                     ii10=[0 0 1];
        end
        if strcmp(g10, 'a^0')   
                     ii10=[0 0 1];
        end
        if strcmp(g10, 'a^1')   
                     ii10=[0 1 0];
        end
        if strcmp(g10, 'a^2')  
                     ii10=[1 0 0];
       end
        if strcmp(g10, 'a^3')   
                     ii10=[0 1 1];
        end
        if strcmp(g10, 'a^4')   
                     ii10=[1 1 0];
        end
        if strcmp(g10, 'a^5')   
                     ii10=[1 1 1];
        end
        if strcmp(g10, 'a^6')   
                     ii10=[1 0 1];
        end
        if strcmp(g10, 'a^7')   
                     ii10=[0 0 1];
        end
        if strcmp(g10, 'a^8')   
                     ii10=[0 1 0];
        end
        if strcmp(g10, 'a^9')  
                     ii10=[1 0 0];
        end
        if strcmp(g10, 'a^10')   
                     ii10=[0 1 1];
        end
     
        %*******************************
        g11=char(g11);
        if strcmp(g11, '0')  
                     ii11=[0 0 0];
        end
        if strcmp(g11, '1')  
                     ii11=[0 0 1];
        end
        if strcmp(g11, 'a^0')  
                     ii11=[0 0 1];
        end
        if strcmp(g11, 'a^1')  
                     ii11=[0 1 0];
        end
        if strcmp(g11, 'a^2') 
                     ii11=[1 0 0];
        end
        if strcmp(g11, 'a^3')  
                     ii11=[0 1 1];
        end
        if strcmp(g11, 'a^4')  
                     ii11=[1 1 0];
        end
        if strcmp(g11, 'a^5')  
                     ii11=[1 1 1];
        end
        if strcmp(g11, 'a^6')  
                     ii11=[1 0 1];    
        end
        if strcmp(g11, 'a^7')  
                     ii11=[0 0 1];
        end
        if strcmp(g11, 'a^8')  
                     ii11=[0 1 0];
        end
        if strcmp(g11, 'a^9')  
                     ii11=[1 0 0];
        end
        if strcmp(g11, 'a^10')  
                     ii11=[0 1 1];
        end
     
     
    %...ca continu jusqu'a g64
    usc0=ii0;
       usc0=mod(usc0,2);                                     %g1 wird addiert(g10*g11)usw
       usc1=ii10+ii11;
       usc1=mod(usc1,2);
       usc2=ii20+ii21+ii22;
       usc2=mod(usc2,2);
       usc3=ii31+ii32+ii33;
       usc3=mod(usc3,2);
       usc4=ii42+ii43+ii44;
       usc4=mod(usc4,2);
       usc5=ii53+ii54;
       usc5=mod(usc5,2);
       usc6=ii64;
     
         if usc0 ==[0 0 0]
                     isc0='0';
        elseif usc0 ==[0 0 1]                          %Zuweisung in der Form a^x
                     isc0='1';
        elseif usc0 ==[0 1 0] 
                     isc0='a';
        elseif usc0 ==[1 0 0] 
                     isc0='a^2';
        elseif usc0 ==[0 1 1] 
                     isc0='a^3';
        elseif usc0 ==[1 1 0] 
                     isc0='a^4';
        elseif usc0 ==[1 1 1] 
                     isc0='a^5';
        elseif usc0 ==[1 0 1] 
                     isc0='a^6';
        end
        %-----------------------------
        if usc1 ==[0 0 0] 
                     isc1='0';
        elseif usc1 ==[0 0 1] 
                     isc1='1';
        elseif usc1 ==[0 1 0] 
                     isc1='a';
        elseif usc1 ==[1 0 0] 
                     isc1='a^2';
        elseif usc1 ==[0 1 1] 
                     isc1='a^3';
        elseif usc1 ==[1 1 0] 
                     isc1='a^4';
        elseif usc1 ==[1 1 1] 
                     isc1='a^5';
        elseif usc1 ==[1 0 1] 
                     isc1='a^6';
        end
       %-----------------------------
        if usc2==[0 0 0] 
                     isc2='0';
        elseif usc2==[0 0 1] 
                     isc2='1';
        elseif usc2==[0 1 0] 
                     isc2='a';
        elseif usc2==[1 0 0] 
                     isc2='a^2';
        elseif usc2==[0 1 1] 
                     isc2='a^3';
        elseif usc2==[1 1 0] 
                     isc2='a^4';
        elseif usc2==[1 1 1] 
                     isc2='a^5';
        elseif usc2==[1 0 1] 
                     isc2='a^6';
        end
       %-----------------------------
        if usc3==[0 0 0] 
                     isc3='0';
        elseif usc3==[0 0 1] 
                     isc3='1';
        elseif usc3==[0 1 0] 
                     isc3='a';
        elseif usc3==[1 0 0] 
                     isc3='a^2';
        elseif usc3==[0 1 1] 
                     isc3='a^3';
        elseif usc3==[1 1 0] 
                     isc3='a^4';
        elseif usc3==[1 1 1] 
                     isc3='a^5';
        elseif usc3==[1 0 1] 
                     isc3='a^6';
        end
        %-----------------------------
        if usc4==[0 0 0] 
                     isc4='0';
        elseif usc4==[0 0 1] 
                     isc4='1';
        elseif usc4==[0 1 0] 
                     isc4='a';
        elseif usc4==[1 0 0] 
                     isc4='a^2';
        elseif usc4==[0 1 1] 
                     isc4='a^3';
        elseif usc4==[1 1 0] 
                     isc4='a^4';
        elseif usc4==[1 1 1] 
                     isc4='a^5';
        elseif usc4==[1 0 1] 
                     isc4='a^6';
        end
        %-----------------------------
        if usc5 ==[0 0 0] 
                     isc5='0';
        elseif usc5==[0 0 1] 
                     isc5='1';
        elseif usc5==[0 1 0] 
                     isc5='a';
        elseif usc5==[1 0 0] 
                     isc5='a^2';
        elseif usc5==[0 1 1] 
                     isc5='a^3';
        elseif usc5==[1 1 0] 
                     isc5='a^4';
        elseif usc5==[1 1 1] 
                     isc5='a^5';
        elseif usc5==[1 0 1] 
                     isc5='a^6';
        end
        %-----------------------------
        if usc6==[0 0 0] 
                     isc6='0';
        elseif usc6==[0 0 1] 
                     isc6='1';
        elseif usc6==[0 1 0] 
                     isc6='a';
        elseif usc6==[1 0 0] 
                     isc6='a^2';
        elseif usc6==[0 1 1] 
                     isc6='a^3';
        elseif usc6==[1 1 0] 
                     isc6='a^4';
        elseif usc6==[1 1 1] 
                     isc6='a^5';
        elseif usc6==[1 0 1] 
                     isc6='a^6';
        end
     
     
        isc0
        isc1
        isc2
        isc3
        isc4                                     %Ausgabe 
        isc5
        isc6
    %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    %Lösung Ausgabe
    X = sprintf('%s,%s,%s,%s,%s,%s,%s,',isc0,isc1,isc2,isc3,isc4,isc5,isc6);
     
    set(handles.ucw,'string',X);

  8. #8
    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 830
    Points
    14 830
    Par défaut
    Ouch

    Il y a moyen d'optimiser largement ton code, en particulier en utilisant les tableaux de cellules et surtout en évitant les variables nommées var1, var2... (voir : Comment créer des variables nommées A1, A2, A3, ...,AN ?)

    Tu as apparemment du faire plein de copier/coller (tu aurais déjà pu faire des sous-fonctions pour mutualiser les actions répétitives, et aussi utiliser SWITCH au lieu de tous ces IF/ELSEIF).

    Je te montre juste pour le début de ton 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
    if r17==1
        %Anzahl der Fehler wird gelesen
        E = str2double(get(handles.E,'String'));
     
        %Je nach Wert von E vird ein Fall durchlaufen
     
     
     
        if E == 1
            syms a;
            for k=0:4
                ik{k+1} = get(handles.(sprintf('i%n',k)),'String');
            end
            %et remplacer i0 par ik{1}, i1 par ik{2}, etc...
            %         i0 = get(handles.i0,'String');
            %         i1 = get(handles.i1,'String');
            %         i2 = get(handles.i2,'String');
            %         i3 = get(handles.i3,'String');
            %         i4 = get(handles.i4,'String');
     
     
            %Définir aussi g comme tableau de cellules en décalant de 1 pour les
            %indices
            %0=>1, 1=>2
            g{1,1}= a^3*i{1};
            g{2,1}  = a^4*i{1};
            %etc...
     
    %         g00=a^3*i0;
    %         g10=a^4*i0;
    %         g11=a^3*i1;
    %         g20=a^0*i0;
    %         g21=a^4*i1;
    %         g22=a^3*i2;
    %         g31=a^0*i1;                                   %Festlegung von g(x)
    %         g32=a^4*i2;
    %         g33=a^3*i3;
    %         g42=a^0*i2;
    %         g43=a^4*i3;
    %         g44=a^3*i4;
    %         g53=a^0*i3;
    %         g54=a^4*i4;
    %         g64=a^0*i4;
     
            %On peut donc ensuite boucler sur les g{i,k} puisque c'est toujours la même
            %manip
            for Lig = 1:size(g,1)
                for Col = 1:size(g,2)
                    res =  char(g{Lig,Col});
                    switch res
                        case '0'
                            ii{Lig,Col} = [0 0 0 0 0];
                        case 'a^0'
                            ii{Lig,Col}=[0 0 0 0 1];
                        case '1'
                            %etc...
                        otherwise
                            disp('reste a coder');
                    end
    J'imagine que ce n'est surement pas la réponse que tu attendais, et que c'est assez décourageant de devoir remanier tout son code, mais je te promets que ce ne sera pas du temps perdu, bien au contraire.

    Et pour la transformation en binaire je me demande quand même s'il n'y a pas moyen d'utiliser DEC2BIN directement sur la puissance de a.

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Salut caroline,
    tout d'abord merci une fois encore de plus pour ton aide,
    en ce qui conserne la fonction DEC2BIN, je ne peux pas l'utiliser parce que les valeurs decimales ne sont pas toujours egales aux valeurs binaire,elles dependent d'un polynome p(x)
    Pour p(x)=a^3+a+1 on obtient:
    a^0=001
    a^1=010
    a^2=100
    a^3=011
    a^4=110
    a^5=111
    a^6=101
    a^7=001
    par exple:
    a^6===> [1 0 1] or 101 est la valeur "5" en decimal, et la valeur binaire de "6" c'est 110, je vais essayer ta proposition et je te tiendrais au courant.


  10. #10
    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 830
    Points
    14 830
    Par défaut
    Tiens juste pour pas que ça parte n'importe comment en fait pour g tu n'as pas tous les indices donc faire un tableau 2-D n'est pas une bonne idée.
    Il faudrait mieux faire un tableau 1-D :
    Et si vraiment tes indices étaient importants avoir un tableau de double à côté qui les récapitule pour si tu en as besoin plus tard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    indices = [00 10 11 20 21 22 ..]

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Salut Caro-Line,
    j'ai ecris le programme de cette facon ci, mais j'ai rien comme resultat, je ne sais pas pourquoi
    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
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    function decodierung_Callback(hObject, eventdata, handles)
    % hObject    handle to codierung (see GCBO)
    if r17==1
     
        E = str2double(get(handles.E,'String'));%lecture du nombre d'erreur
     
        if E == 1
            syms a;
            for k=0:4
                ik{k+1} = get(handles.(sprintf('i%n',k)),'String');
            end
     
            %g = [00 10 11 20 21 22 31 32 33 42 43 44 53 54 55];
            g{1,1}  = a^3*i{1};
            g{2,1}  = a^4*i{1};
            g{2,2}  = a^3*i{2};
            g{3,1}  = a^0*i{1};
            g{3,2}  = a^4*i{2};
            g{3,3}  = a^3*i{3};
            g{4,2}  = a^0*i{2};
            g{4,3}  = a^4*i{3};
            g{4,4}  = a^3*i{4};
            g{5,3}  = a^0*i{3};
            g{5,4}  = a^4*i{4};
            g{5,5}  = a^3*i{5};
            g{6,4}  = a^0*i{4};
            g{6,5}  = a^4*i{5};
            g{7,5}  = a^0*i{5}; 
     
     
            for Lig = 1:size(g,1)
                for Col = 1:size(g,15)
                    res =  char(g{Lig,Col});
                    switch res
                        case '0'
                            ii{Lig,Col} = [0 0 0];
                        case 'a^0'
                            ii{Lig,Col} = [0 0 1];
                        case '1'
                            ii{Lig,Col} = [0 0 1];
                        case 'a^1'
                            ii{Lig,Col} = [0 1 0]; 
                        case 'a^2'
                            ii{Lig,Col} = [1 0 0];
                        case 'a^3'
                            ii{Lig,Col} = [0 1 1];
                        case 'a^4'
                            ii{Lig,Col} = [1 1 0];
                        case 'a^5'
                            ii{Lig,Col} = [1 1 1];
                        case 'a^6'
                            ii{Lig,Col} = [1 0 1]; 
                        case 'a^7'
                            ii{Lig,Col} = [0 0 1];
                        case 'a^8'
                            ii{Lig,Col} = [0 1 0];
                        case 'a^9'
                            ii{Lig,Col} = [1 0 0];
                        case 'a^10'
                            ii{Lig,Col} = [0 1 1];
                        %j'ai pas utilisé OTHERWISE parceque l'utilisateur ne
                        %doit entrer que ses valeur la, il ne doit pas pouvoir
                        %entrer par exple a^8 car les valeur vont en principe
                        %de a^0 a a^6.on retrouve a^10 parceque a^6*a^4=a^10,
                        %dont le 2 plus grande valeur
     
                    end
                end
            end
     
     
       usc0=ii{1,1};
       usc0=mod(usc0,2);                                     
       usc1=ii{2,1}+ii{2,2};
       usc1=mod(usc1,2);
       usc2=ii{3,1}+ii{3,2}+ii{3,3};
       usc2=mod(usc2,2);
       usc3=ii{4,2}+ii{3,4}+ii{4,4};
       usc3=mod(usc3,2);
       usc4=ii{5,3}+ii{5,4}+ii{5,5};
       usc4=mod(usc4,2);
       usc5=ii{6,4}+ii{6,5};
       usc5=mod(usc5,2);
       usc6=ii{7,5};
     
     
         if usc0 ==[0 0 0]
                     isc0='0';
        elseif usc0 ==[0 0 1]                          
                     isc0='1';
        elseif usc0 ==[0 1 0] 
                     isc0='a';
        elseif usc0 ==[1 0 0] 
                     isc0='a^2';
        elseif usc0 ==[0 1 1] 
                     isc0='a^3';
        elseif usc0 ==[1 1 0] 
                     isc0='a^4';
        elseif usc0 ==[1 1 1] 
                     isc0='a^5';
        elseif usc0 ==[1 0 1] 
                     isc0='a^6';
        end
        %-----------------------------
        if usc1 ==[0 0 0] 
                     isc1='0';
        elseif usc1 ==[0 0 1] 
                     isc1='1';
        elseif usc1 ==[0 1 0] 
                     isc1='a';
        elseif usc1 ==[1 0 0] 
                     isc1='a^2';
        elseif usc1 ==[0 1 1] 
                     isc1='a^3';
        elseif usc1 ==[1 1 0] 
                     isc1='a^4';
        elseif usc1 ==[1 1 1] 
                     isc1='a^5';
        elseif usc1 ==[1 0 1] 
                     isc1='a^6';
        end
       %-----------------------------
        if usc2==[0 0 0] 
                     isc2='0';
        elseif usc2==[0 0 1] 
                     isc2='1';
        elseif usc2==[0 1 0] 
                     isc2='a';
        elseif usc2==[1 0 0] 
                     isc2='a^2';
        elseif usc2==[0 1 1] 
                     isc2='a^3';
        elseif usc2==[1 1 0] 
                     isc2='a^4';
        elseif usc2==[1 1 1] 
                     isc2='a^5';
        elseif usc2==[1 0 1] 
                     isc2='a^6';
        end
       %-----------------------------
        if usc3==[0 0 0] 
                     isc3='0';
        elseif usc3==[0 0 1] 
                     isc3='1';
        elseif usc3==[0 1 0] 
                     isc3='a';
        elseif usc3==[1 0 0] 
                     isc3='a^2';
        elseif usc3==[0 1 1] 
                     isc3='a^3';
        elseif usc3==[1 1 0] 
                     isc3='a^4';
        elseif usc3==[1 1 1] 
                     isc3='a^5';
        elseif usc3==[1 0 1] 
                     isc3='a^6';
        end
        %-----------------------------
        if usc4==[0 0 0] 
                     isc4='0';
        elseif usc4==[0 0 1] 
                     isc4='1';
        elseif usc4==[0 1 0] 
                     isc4='a';
        elseif usc4==[1 0 0] 
                     isc4='a^2';
        elseif usc4==[0 1 1] 
                     isc4='a^3';
        elseif usc4==[1 1 0] 
                     isc4='a^4';
        elseif usc4==[1 1 1] 
                     isc4='a^5';
        elseif usc4==[1 0 1] 
                     isc4='a^6';
        end
        %-----------------------------
        if usc5 ==[0 0 0] 
                     isc5='0';
        elseif usc5==[0 0 1] 
                     isc5='1';
        elseif usc5==[0 1 0] 
                     isc5='a';
        elseif usc5==[1 0 0] 
                     isc5='a^2';
        elseif usc5==[0 1 1] 
                     isc5='a^3';
        elseif usc5==[1 1 0] 
                     isc5='a^4';
        elseif usc5==[1 1 1] 
                     isc5='a^5';
        elseif usc5==[1 0 1] 
                     isc5='a^6';
        end
        %-----------------------------
        if usc6==[0 0 0] 
                     isc6='0';
        elseif usc6==[0 0 1] 
                     isc6='1';
        elseif usc6==[0 1 0] 
                     isc6='a';
        elseif usc6==[1 0 0] 
                     isc6='a^2';
        elseif usc6==[0 1 1] 
                     isc6='a^3';
        elseif usc6==[1 1 0] 
                     isc6='a^4';
        elseif usc6==[1 1 1] 
                     isc6='a^5';
        elseif usc6==[1 0 1] 
                     isc6='a^6';
        end
     
     
        isc0
        isc1
        isc2
        isc3
        isc4                                     %Ausgabe 
        isc5
        isc6
    %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    %Lösung Ausgabe
    X = sprintf('%s,%s,%s,%s,%s,%s,%s,',isc0,isc1,isc2,isc3,isc4,isc5,isc6);
     
    set(handles.scw,'string',X)
     
     
        end
    end

  12. #12
    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 830
    Points
    14 830
    Par défaut
    Première lecture rapide : tu n'as pas au moins un message d'erreur ?
    Car tu t'es trompé dans le nom de variables ik => tu l'as nommé i ensuite.
    Il vaut mieux éviter i comme nom de variable car c'est le nombre imaginaire déjà défini dans MATLAB (c'est pour cela que je l'avais nommé ik).

    En plus je ne t'avais donné qu'un bout du code en enlevant le début et tu l'as enlevé aussi donc r17 n'est plus défini.

    Pour g je m'étais trompée et je t'ai dit de faire plutôt un tableau 1-D.
    Et dans ce cas il n'y a qu'une seule boucle.

    Après il faut aussi que tu fasses pareil avec toutes tes variables que tu as appelées <nom><nombres> : usc*, isc*...

Discussions similaires

  1. Réponses: 14
    Dernier message: 28/05/2010, 15h16

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