Utilisation de noms "incrémentés" - Matlab
will0208
-
tug83 -
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
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
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/
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/