[MATLAB] question sur une somme dans une cell

Fermé
sam - Modifié par sam le 17/07/2012 à 14:37
 tug83 - 27 juil. 2012 à 16:04
Salut,

petite question très idiote mais je sèche là :

j'ai ce code sous matlab :
   for j=1:size(factors{1},1)  
        for i=1:taille  
            contrib{j,i} = a(j,i)*za(:,:,i);  
        end  
        contribmat{j} = contrib{j,1}.+contrib{j,2};  
    end  


la ligne " contribmat{j} = contrib{j,1}.+contrib{j,2}; "
est comme ça pour i = 2 mais pour i= 5 par exemple, ça devrait être
contribmat{j} = contrib{j,1}.+contrib{j,2}.+contrib{j,3}.+contrib{j,4}.+contrib{j,5};

comment je peux simplifier et automatiser cette écriture, parce que dans mon cas ici, si i passe à 5 ça ne va pas marcher sans intervenir dans le code et changer la ligne à la main ?

La fonction sum ne marche pas sur les éléments d'une cellule. Et j'ai l'impression que c'est facile à réaliser mais je passe à côté.

merci


si ça peut aider, ma cellule contrib est composée de plusieurs matrices de dimensions similaires :
contrib =
[43x105] [43x105]
[43x105] [43x105]
[43x105] [43x105]
[43x105] [43x105]
...

Et en gros pour chaque lignes, je veux une matrice "somme [43x105]" qui soit la somme des matrices de la ligne en question. Le nombre de colonnes de la cellule contrib pouvant varier.
A voir également:

1 réponse

up
0
pour sommer une matrice contenue dans une cellule , il faut combiner la fonction sum avec cellfun
cellfun permet d'appliquer une fonction courante telle que sum , isempty à une cellule

Exemple :
>> A = magic(3)
>> B = sum(sum(A))
ans = 45

Maintenant avec une cellule:
>> sum({A})
Undefined function 'sum' for input arguments of type 'cell'.

ce que du as du avoir

donc la solution est comme je disais :
sum(cell2mat(cellfun(@sum,{A},'uni',false)))
ans = 45

Aurélien
http://blog.developpez.com/matlab4geek/
0