Bonjour a tous,

J'ai un petit soucis algorithmique que je n'arrive pas à résoudre proprement. Le problème est assez simple à énoncer, je voudrais construire une "structure" matlab fonctionnant comme tel à partir d'un ensemble de cellules de tailles différentes, de manière à ce que matlab reconnaisse les champs identique et construise une arborescence automatiquement. Ce sera plus clair avec ce bout de code exemple:

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
 
A{1} = {'chp1' ; 'chp2' ; 'chp3' ; 'chp4'};
A{2} = {'chp1' ; 'chp2' ; 'chp5'};
A{3} = {'chp1' ; 'chp2' ; 'chp3' ; 'chp6' ; 'chp7' ; 'chp8'};
 
S = struct ;
for i=1:length(A)
    if size(A{i},1)==2  ;
        S.(A{i}{1}).(A{i}{2})='valeurquelconque' ;
    elseif size(A{i},1)==3  ;
        S.(A{i}{1}).(A{i}{2}).(A{i}{3})='valeurquelconque' ;
    elseif size(A{i},1)==4  ;
        S.(A{i}{1}).(A{i}{2}).(A{i}{3}).(A{i}{4})='valeurquelconque' ;
    elseif size(A{i},1)==5  ;
        S.(A{i}{1}).(A{i}{2}).(A{i}{3}).(A{i}{4}).(A{i}{5})='valeurquelconque' ;
    elseif size(A{i},1)==6  ;
        S.(A{i}{1}).(A{i}{2}).(A{i}{3}).(A{i}{4}).(A{i}{5}).(A{i}{6})='valeurquelconque' ;
    end
end
Ce code me permet de lire les infos de champ dans ma cellule A, puis créer une structure S contenant l'arborescence de ces même champs. Le problème que l'on voit clairement est qu'en plus d'être une solution particulièrement laide, si A{4} par exemple contient 26 champs, cette méthode brute devient ingérable....
J'ai essayé un certain nombre de choses à base de "eval", "setfield", "getfield", et autres "subasgn", mais rien n'y fait, je n'arrive pas à incrémenter mon "nombre de couple père/fils" de manière automatique...

Y-a-t-il une solution à ce problème, ou ceci correspond-t-il à une limitation "sémantique" de matlab...?
Merci beaucoup de votre aide/opinion!