Discussion:
Convertir une liste en matrice
(too old to reply)
v***@gmail.com
2022-11-14 15:34:39 UTC
Permalink
Bonjour,

J'ai une liste dont tous les éléments sont ont le même type (par ex. des
nombres), et je voudrais convertir cela en matrice. Si je fais cela :

--------8<-----------8<-----------8<-----------8<-----------8<-------
l = list(1,2,3);
m = zeros(1, length(l));
m(:) = l(:);
--------8<-----------8<-----------8<-----------8<-----------8<-------

Ça ne marche pas, car tous les éléments de m seront égaux à l(1), et m
vaudra [1 1 1] au lieu de [1 2 3] !

Finalement j'ai fait comme ça :

--------8<-----------8<-----------8<-----------8<-----------8<-------
l = list(1,2,3);

function y = list_to_mat(x)
l = length(x);
y = zeros(l,1);
for i = 1:l,
y(i) = x(1)
x(1) = null()
i = i + 1;
end
endfunction

m = list_to_mat(l)
--------8<-----------8<-----------8<-----------8<-----------8<-------

Y a-t-il une meilleure façon de le faire ?


Je précise que la liste provient d'un fromJSON sur un fichier qui ne
dépend pas de moi, donc je n'ai pas d'autre choix que de partir d'une
liste.
v***@gmail.com
2022-11-17 16:14:10 UTC
Permalink
Post by v***@gmail.com
Bonjour,
J'ai une liste dont tous les éléments sont ont le même type (par ex. des
--------8<-----------8<-----------8<-----------8<-----------8<-------
l = list(1,2,3);
m = zeros(1, length(l));
m(:) = l(:);
--------8<-----------8<-----------8<-----------8<-----------8<-------
Ça ne marche pas, car tous les éléments de m seront égaux à l(1), et m
vaudra [1 1 1] au lieu de [1 2 3] !
--------8<-----------8<-----------8<-----------8<-----------8<-------
l = list(1,2,3);
function y = list_to_mat(x)
l = length(x);
y = zeros(l,1);
for i = 1:l,
y(i) = x(1)
x(1) = null()
i = i + 1;
end
endfunction
m = list_to_mat(l)
--------8<-----------8<-----------8<-----------8<-----------8<-------
Y a-t-il une meilleure façon de le faire ?
Je précise que la liste provient d'un fromJSON sur un fichier qui ne
dépend pas de moi, donc je n'ai pas d'autre choix que de partir d'une
liste.
Je me réponds à moi-même : il y a list2vec pour le faire …

Loading...