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 :

question script matlab ?


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    autres
    Inscrit en
    Septembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : autres
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2012
    Messages : 12
    Par défaut question script matlab ?
    Bonjour à tous,

    J'aurai une question à vous poser concernant un script matlab sur lequel je cale. J'ai essayé pas mal de solution mais je n'ai pas une grande expérience de matlab malheureusement. J'espère que ma question est posée dans la bonne rubrique.

    Mon problème est le suivant : je cherche à faire fonctionner le script suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    name = importdata('list.txt')
     
    for i = 1:length(name)
     
        atlas= [atlas_name{i},'_.nii'];
     
              for k = 1:28
                V=spm_vol(altas); 
                X=spm_read_vols(V); 
                numvox=length(find(X==numlobules)); 
     
     
    end
    Ce script appelle une liste de sujets (dans list.txt) puis pour chaque sujet, je cherche à générer un résultat en fonction de la variable k.
    Le résultat est stocké dans la variable numvox (pour nombre de voxel).
    Dans l'état actuel de mon script, numvox prend à chaque fois une nouvelle valeur puis est écrasé par la suivante.
    Je voudrai définir la variable numvox à la fois en fonction de la variable k et aussi de la variable i (celle du nom du sujet), de manière à pouvoir avoir :
    numvox_name1_k1 = valeur 1
    numvox_name2_k1 = valeur 2
    numvox_name3_k1 = valeur 3 et ainsi de suite... numvox_name"n"_k"n"

    ensuite je voudrai imprimer toutes ces valeurs dans un fichier texte qui prendrait idéalement la forme suivante :

    numvox valeur_k1 valeur_k2 valeur_k3 valeur_k4 .... valeur_kn
    name1 valeur 1
    name2 valeur 2
    name3 valeur 3

    en sachant que toutes les lignes du tableau sont remplies

    Je suis totalement perdu. Je n'arrive pas à définir numvox avec un nom qui change en fonction de k et de i, et pour l'imprimer dans un fichier texte, je ne m'en sors pas avec les variables fopen et fprintf

    Toute aide, ou toute idée, même partielle serait vraiment la bienvenue.

    Merci beaucoup pour votre aide

    Bonne soirée,

    Charles

  2. #2
    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
    Par défaut
    Bonjour,

    commençons par le début, pour stocker numvox sans l'écraser à chaque itération :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    name = importdata('list.txt');
    %pre-allocation
    numvox = zeros(length(name),28);
    for i = 1:length(name)    
        atlas= [atlas_name{i},'_.nii'];
        for k = 1:28
            V=spm_vol(altas);
            X=spm_read_vols(V);
            numvox(i,k)=length(find(X==numlobules));
        end
    end
    Pour la pre-allocation, voir la : Qu'est-ce que la préallocation de mémoire ?

    Ensuite, tu peux écrire ton fichier à l'extérieur de ces boucles, ce sera plus simple je pense.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre habitué
    Homme Profil pro
    autres
    Inscrit en
    Septembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : autres
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2012
    Messages : 12
    Par défaut
    Merci beaucoup magelan, et désolé de ne pas avoir mis le code en page de la façon habituelle pour le site.
    Je vais essayer ce que tu me suggères et je vais m'occuper du fichier texte en dehors de la boucle.

    Je te souhaite une très bonne journée,

    Charles

  4. #4
    Membre habitué
    Homme Profil pro
    autres
    Inscrit en
    Septembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : autres
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2012
    Messages : 12
    Par défaut
    Bonjour à tous & Bonjour Magelan,


    J'ai suivi les conseils que vous m'avez donné et ça a plutôt bien fonctionné (cf mon script ci dessous).
    Il ne me reste en fait que deux soucis :

    Le premier est je pense assez simple :
    En fait ma liste "list.txt" appelle une liste de sujets, et le problème est que lorsque un sujet ne fonctionne pas, le script s'arrête. J'ai essayé de chercher mais je ne trouve pas la bonne solution facilement à ce problème. J'aimerai pouvoir avoir une ligne qui me permet en cas d'erreur d'afficher un message puis de poursuivre le script. Ca à l'air simple comme ça mais je ne trouve pas de solution.
    Ce problème se pose à chaque étape de mon script ci-dessous.

    Le second problème est peut être plus complexe :
    En fait il faudrait que à la fin de mon script, lorsque j'utilise la fonction csvwrite, je puisse obtenir une colonne à gauche contenant mes sujets dont le nom se trouve dans la liste "list.txt". L'idéal serait donc d'afficher le contenu de name{i} à chaque ligne pour la colonne de gauche.

    Pour l'instant mon script n'a pas de nom de colonne et de lignes, il ne contient que le nombre de voxel pour chaque sujet name{i} et pour chaque valeur de k
    (après je peux faire la correspondance en comparant à la liste list.txt, mais disons que ce n'est pas le plus simple pour moi



    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
     
    %Script Suit_isolate - Isole le cervelet et crée le mask (isolation map)
    name = importdata('list.txt')
    for i = 1:length(name)
        display(name{i})
        image_t1 = [name{i},'.nii'];
        suit_isolate(image_t1);
    end 
     
     
    %Script Suit_normalize - Normalisation classique
    name = importdata('list.txt')
    for i = 1:length(name)
        display(name{i})
        image_t1_cropped = ['c_',name{i},'.nii'];
        mask = ['c_',name{i},'_pcereb_corr.nii'];
        suit_normalize(image_t1_cropped,'mask',mask);
    end
     
    %Script Suit_normalize - Normalisation dartel
    %name = importdata('list.txt')
    %for i = 1:length(name)
        %GM_prob_map = [name{i},'_seg1.nii'];
        %WM_prob_map = [name{i},'_seg2.nii'];
        %mask = ['c_',name{i},'_pcereb_corr.nii'];
        %suit_normalize_dartel(GM_prob_map,WM_prob_map,'mask',mask);
    %end
     
     
    %Script Suit_reslice - l'image est mise dans l'espace de SUIT
    name = importdata('list.txt')
    for i = 1:length(name)
        display(name{i})
        image_t1_cropped =['c_',name{i},'.nii'];
        deformation_map = ['mc_',name{i},'_snc.mat'];
        mask = ['c_',name{i},'_pcereb_corr.nii'];
        suit_reslice(image_t1_cropped,deformation_map,'mask',mask);
    end
     
    %Script Suit_reslice_inv - retour de l'image dans l'espace cropped du sujet
    name = importdata('list.txt')
    for i = 1:length(name)
        display(name{i})
        deformation_map = ['mc_',name{i},'_snc.mat'];
        mask = ['c_',name{i},'_pcereb_corr.nii'];
        nom = [name{i},'_'];
        suit_reslice_inv('Cerebellum-SUIT.nii',deformation_map,'prefix',nom);
    end
     
    %Script d'extraction des volumes - donne fichier texte avec volume.
    name = importdata('list.txt')
     
    %Commande de pré-allocation
    numvox = zeros(length(name),28);
     
    for i = 1:length(name)
     
        atlas_espace_sujet = [name{i},'_Cerebellum-SUIT.nii'];
     
        for k = 1:28
     
        V=spm_vol(atlas_espace_sujet);
        X=spm_read_vols(V);
        numvox(i,k)=length(find(X==k));
     
        end 
     
     
    end
     
    csvwrite('total_SUIT_cerebellum.csv',numvox)
    Merci beaucoup pour votre aide à tous et bonne journée,

    Charles

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    Bonjour,

    Pour le premier problème, voir la documentation sur la fonction try/catch.

    Pour répondre à ta deuxième question efficacement, j'aimerai connaître le contenu de ta variable numvox? whos numvox dans la command window

  6. #6
    Membre habitué
    Homme Profil pro
    autres
    Inscrit en
    Septembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : autres
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2012
    Messages : 12
    Par défaut
    Salut Gooby,

    Merci beaucoup pour ta réponse.

    Je vais chercher dans la documentation des informations sur la commande try/catch

    Je n'ai pas windows mais ubuntu..

    quand je tape numvox dans matlab j'obtiens le résultat suivant (en fin de mon mail).

    En fait numvox est une fonction d'un logiciel d'imagerie qui s'appelle SPM et qui fonctionne sous Matlab.
    L'objectif final est de compter le nombre de voxel de chaque sous partie du cerveau.
    Les différentes sous parties vont de 1 à 28 ; ce sont les valeurs que peut prendre k. En fait chaque sous partie du cerveau a une intensité différente, donc enfait la fonction numvox va lire un volume (une image du cerveau), et compter le nombre de voxel de telle intensité et me le renseigner.

    Je ne sais pas si je réponds à ta question.

    Merci beaucoup pour ton aide

    Bonne journée,

    Charles


    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
    numvox =
     
      Columns 1 through 5
     
            2548        2607        3248        2559        6988
            3381        3103        4038        3512        7727
            3992        2721        3951        2728        7718
            2755        2678        3396        2906        7066
            4465        4168        4680        3952       10733
            3282        3419        4911        4002       10757
            3795        3638        4512        4667        8834
            3691        3414        4253        3774        7820
            3631        3560        5053        4265        8644
            2883        3099        3203        3031        7794
            3206        2915        3303        2557        8608
            3582        3677        4865        3475       11366
            2861        3232        3154        3157        7263
            3887        3710        4500        3674        9498
            3086        3215        4164        3606        9002
            3672        3214        5185        3756       10641
            3252        3122        3745        3523        7650
            3126        3036        4003        3281        9271
            2430        2568        3193        2401        7270
            2477        2562        2861        2374        6577
            3052        2583        3302        2987        8207
            2585        2656        2884        2772        7066
            2798        3083        3273        3110        9097
            2986        2814        3286        2651        7292
            3350        3684        3976        3469        8235
            3118        3113        3605        3247        7488
            3416        3113        4544        3651        7178
            4433        3888        4735        3671        8239
            3267        3155        4220        3564        8991
            3946        3741        4433        3552        9718
            3263        3137        4340        3888        9933
            1469        1644        1771        1773        3580
            3141        3162        3482        2899        8264
            3134        3727        3954        3473        9522
            2963        3133        3576        3051        7887
            3499        3585        4068        3528        8034
            2454        3292        3798        3639        7818
            3446        3357        4028        2978        9194
            3124        3028        3997        3531        8294
            2714        3135        2933        2915        7121
            3428        3306        4646        3869        8790
            3606        3341        4465        3069        8724
            3690        3272        4258        3213        9103
            2578        2989        3165        3234        6667
            5785        3551        6986        3725       12640
            3365        2966        3654        3158        7293
     
      Columns 6 through 10
     
            1284        5369        9822          14        9122
            1355        6315       10549           9        8210
            1739        6107       11154          25       10228
            1635        6266        8931          16        8775
            2480        8699       13392          22       14219
            2828        9036       14149          32       15377
            1672        9224       13461          31       12717
            1172        6840       11861          17       11391
            2169        7731       12446          31       12831
            1503        5459       10667          21       11209
            1665        6809       14339          16       13862
            2391        7679       15839          19       17590
            1522        6758       10874          24       11651
            2003        7904       16975          29       16239
            1515        6935       13249          24       13433
            2296        8446       14799          25       13978
            2041        6737       10731          18       12797
            1949        7926       12792          31       13240
            1557        6403        8161          22        7527
            1370        5261        9315          14        9693
            1771        6164        9434          12        9658
            1781        4784       12040          13       10443
            1611        6583        9217          11       10169
            1574        5906        9296          21        9810
            1794        5864       10648          22       11746
            1243        5967       10818          10       10916
            1666        6090       12407          22       10104
            2171        7363       12723          30       12928
            1709        7178       11590           9       11824
            1973        7449       16253          23       14199
            1674       10332       12083          18       12129
             795        3241        4501           6        4670
            1810        6712       12640          25       12084
            1441        7169       12920          22       12273
            2174        6956       13560          31       12829
            1736        6453       11720          21       11217
            1757        5948        9925          31       10114
            1723        7182       11161          14       12209
            1714        7947       13262          13       12337
            1328        5279       11849          18       11650
            1521        7174       15271          30       15231
            1792        6834       13494          29       13860
            1582        6424       12818          18       13706
            1455        5813        9908          19        7932
            2973       10110       12377          32       13658
            2131        6936       13546          25       13301
     
      Columns 11 through 15
     
            6906         377        6575        3164         147
            5555         245        4356        2483         134
            6029         411        5815        3406         173
            6707         378        6981        3495         138
            8158         485        8546        3511         185
            8133         440        7547        3378         208
            7487         468        6209        3455         173
            7581         347        7366        3636         129
            9988         445       10245        4530         208
            8702         498        7724        4268         157
            9115         432        8617        3443         186
            8383         466        8805        2912         194
            7216         345        6705        1953         127
            9573         467        8922        3997         192
            7450         322        7147        3308         147
            7864         511        8670        2515         173
            8350         420        8959        4506         193
            8648         533        8330        3985         223
            6765         312        6973        3347         118
            6594         363        7686        3041         148
            7042         399        6686        3344         150
            6744         359        6953        2905         175
            7250         372        6686        3014         142
            7720         464        8340        3980         158
            8514         443        8267        4161         173
            7459         360        8553        3633         141
           10208         337        9717        5048         137
            9721         543        8701        4593         174
            7573         330        7633        4187         165
            9082         576        8155        4403         243
            7857         341        6182        3114         165
            3017         172        3341        1680          69
           10367         485       10485        4696         147
            6713         420        6990        2465         177
            9663         536        9362        4365         182
            9566         457        7798        4562         222
           10369         558       10577        4637         158
            6826         325        5957        2449         152
            7837         433        7873        3348         167
            6049         324        6664        2710         172
            9527         429        7532        3674         161
            7131         326        6393        2931         131
            7976         395        8330        3634         164
            9947         415        9853        4654         138
            6561         467        6094        2752         186
            8163         539        8998        3537         162
     
      Columns 16 through 20
     
            3281        3040         841        3046        2248
            2282        2644         629        2478        2241
            3701        3974         841        3886        3030
            3722        3633         718        3483        2735
            4451        3707        1066        3854        4186
            3731        3393         885        3156        2645
            3053        3588         968        3170        3009
            3580        4161         796        3561        3396
            4310        4330        1046        3935        3599
            4163        4057         930        4411        3477
            3567        3174         942        3425        3178
            3075        3432         976        3539        3216
            1546        2045         710        1655        2155
            4724        4331         846        4213        3511
            4208        4251         847        3539        3761
            4198        2629        1040        3134        2297
            4135        4353         929        3255        3139
            4197        3829         898        3614        3063
            3962        3469         663        3139        2437
            3706        3375         901        2845        2828
            3831        3629         729        3437        2588
            3327        3407         857        3073        2904
            2903        3012         671        2871        2579
            4291        4475         702        3573        3454
            3936        3948         912        3311        2935
            4302        4382         820        3606        4363
            5100        4071         824        3736        2988
            4487        4031         948        4271        3421
            3936        4590         845        3439        2978
            4616        4312        1208        4148        3515
            2789        3334         732        2907        3021
            1796        1858         461        1709        1621
            4680        4623         958        4085        3439
            3576        2683         787        3740        2661
            4157        3854         927        4182        2732
            5006        4192        1182        4683        3677
            5367        4500         767        4528        3939
            3063        2695         567        3042        2599
            3625        3437         766        3222        2577
            2565        3777         863        2968        4137
            4412        4012         998        4355        3466
            2398        3111         868        2522        2930
            4384        4370         917        3773        3889
            4832        3946         834        3993        2713
            2866        3313         930        3112        2751
            4257        4389        1052        3566        4561
     
      Columns 21 through 25
     
             362        2435        1716         408        1858
             325        2274        2041         487        2008
             420        3151        2738         607        2953
             295        2605        2082         436        2020
             580        2785        3682         801        2993
             375        2790        2872         742        3131
             490        2819        2402         608        2427
             415        3038        2125         570        2483
             460        3561        3204         636        3600
             442        3692        2766         567        2846
             453        3492        2642         625        2658
             554        3572        2803         751        2984
             383        1823        2020         576        2136
             417        3512        3071         715        3270
             472        2545        2416         621        2326
             484        2411        1984         575        2131
             463        2718        2475         604        2697
             398        2996        2502         524        2599
             326        2489        1951         465        2056
             456        2558        2063         583        2413
             369        2537        1883         507        2060
             366        2610        2158         576        2200
             368        2605        2226         564        2504
             395        2960        2712         554        2863
             475        3333        2694         650        2843
             351        3864        2784         534        3425
             445        2777        2385         594        2626
             528        3537        2983         624        3276
             418        2629        2345         641        2585
             665        3839        3347         839        3906
             321        2835        2308         557        2321
             238        1563        1396         317        1464
             596        3189        2791         735        3065
             369        2939        2073         520        2120
             470        3579        2464         695        2780
             591        3684        2937         727        2962
             435        3701        3307         665        3636
             310        2629        2363         615        2422
             333        2641        2217         544        2387
             439        3420        2551         542        2625
             582        3219        3023         748        3314
             486        2702        2484         634        2580
             454        3176        2227         487        2084
             442        2887        2466         583        2492
             447        2809        2284         607        2486
             576        3156        3022         684        3140
     
      Columns 26 through 28
     
             489         135         419
             526         179         446
             489         296         516
             489         339         409
             600         281         629
             459         538         477
             555         236         529
             595         204         604
             581         398         550
             480         220         513
             517         369         563
             625         269         657
             540         254         500
             701         394         655
             613         239         469
             589         214         531
             466         233         434
             552         240         548
             446         172         451
             547         204         459
             488         217         473
             520         240         494
             440         206         441
             566         214         555
             615         222         588
             699         355         620
             520         217         466
             558         241         620
             556         228         548
             666         265         602
             543         457         470
             266         141         263
             613         253         580
             598         261         597
             571         291         488
             651         199         632
             603         244         558
             568         337         547
             541         260         545
             657         289         556
             530         226         498
             574         279         544
             659         298         641
             454         210         424
             572         233         517
             632         263         560

Discussions similaires

  1. Traduire un script MATLAB
    Par ABN84 dans le forum MATLAB
    Réponses: 7
    Dernier message: 12/05/2008, 07h34
  2. Réponses: 2
    Dernier message: 06/05/2008, 10h44
  3. [LabView 7.1] Utilisation de script Matlab
    Par napolise dans le forum LabVIEW
    Réponses: 4
    Dernier message: 28/04/2008, 15h47
  4. Pour vos questions scripts de Newsletter pour PHP
    Par Marc Lussac dans le forum E-Mailing
    Réponses: 0
    Dernier message: 25/08/2007, 16h19
  5. Script Matlab sous Latex
    Par Tatouille31 dans le forum Mise en forme
    Réponses: 3
    Dernier message: 25/07/2007, 17h07

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