Utilisation de noms "incrémentés" - Matlab

will0208 -  
 tug83 -
Bonjour,

voici mon problème sur Matlab :
j'ai appris à incrémenter (sur ce forum, merci "Sacabouffe") des noms de matrices, et je voudrais réutiliser ces noms incrémentés dans un autre boucle "for". Ci-dessous l'algorithme :

clear
clc

nombre=3;

for i=1:nombre
eval(['souplesse_' num2str(i) ' = zeros(3)'])
end


Ci-dessous le résultat obtenu :

souplesse_1 =

0 0 0
0 0 0
0 0 0

souplesse_2 =

0 0 0
0 0 0
0 0 0

souplesse_3 =

0 0 0
0 0 0
0 0 0


Jusqu'ici j'ai ce que je veux

maintenant l'idée serait de programmer ceci :

for i = 1:nombre
souplesse_(i) = [xx xx xx ; xx xx xx ; xx xx xx]
end


Or la "prise en compte" du i me pose problème pour cette boucle for,
quelqu'un a-t-il une piste de synthaxe svp?
merci d'avance

1 réponse

  1. tug83
     
    Tu ne peux pas affecter une matrice à une variable de cette façon. tu dois passer par les cellules.
    Sinon tu auras le message:
    ??? In an assignment A(I) = B, the number of elements in B and
    I must be the same.

    Une idée :
    for i=1:nombre
    souplesse_{i} = zeros(3)
    end

    ou en une ligne
    souplesse_ = {zeros(3);zeros(3);zeros(3)}

    Ensuite si tu tapes
    >> cell2mat(souplesse_(1))
    tu retrouveras bien ta première matrice de zéros

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