Créer un "cube" de données sous octave/matlab
Swiss Knight
Messages postés
1956
Date d'inscription
Statut
Membre
Dernière intervention
-
Swiss Knight Messages postés 1956 Date d'inscription Statut Membre Dernière intervention -
Swiss Knight Messages postés 1956 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
petite question toute simple ;
j'ai N matrices de même dimension (250x300) (un fichier texte par matrice)
et j'aimerai créer un tableau multidimensionnel avec ces matrices en les alignant les unes derrières les autres selon la profondeur pour avoir un tableau multidim. X = (250x300xN)
Comment y arriver en pouvant sélectionner les fichiers à charger dans cette matrice X ?
C'est surement très simple, mais je n'y arrive pas là :S
petite question toute simple ;
j'ai N matrices de même dimension (250x300) (un fichier texte par matrice)
et j'aimerai créer un tableau multidimensionnel avec ces matrices en les alignant les unes derrières les autres selon la profondeur pour avoir un tableau multidim. X = (250x300xN)
Comment y arriver en pouvant sélectionner les fichiers à charger dans cette matrice X ?
C'est surement très simple, mais je n'y arrive pas là :S
A voir également:
- Créer un "cube" de données sous octave/matlab
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un lien pour partager des photos - Guide
- Créer un compte gmail - Guide
- Créer un compte instagram sur google - Guide
2 réponses
J'en suis là mais sans succès :
[FILENAME, PATHNAME, FILTERINDEX] = UIGETFILE('*.txt','Choisissez vos matrices au format texte','MultiSelect','on')
for i=1:length(FILENAME)
file_name=strcat(PATHNAME,FILENAME{i});
tranche=load('-ascii',file_name);
M(:,:,i)=tranche;
end
il me sort dans M que le dernier fichier texte et c'est une simple matrice 2D... :'(
[FILENAME, PATHNAME, FILTERINDEX] = UIGETFILE('*.txt','Choisissez vos matrices au format texte','MultiSelect','on')
for i=1:length(FILENAME)
file_name=strcat(PATHNAME,FILENAME{i});
tranche=load('-ascii',file_name);
M(:,:,i)=tranche;
end
il me sort dans M que le dernier fichier texte et c'est une simple matrice 2D... :'(
Salut,
le problème venait du fait qu'il fallait définir la taille du cube avant d'y mettre quelque chose apparemment...
Ce code fonctionne chez moi sous matlab (ça empile les matrices comme des feuilles de papier finalement) :
et presque le même sous octave :
Je n'ai pas trouvé un moyen de visualiser une tranche de la matrice sous Matlab par contre sous Octave oui, pratique si l'on veut voir un peu comment c'est organisé au début pour vérifier le bon fonctionnement de sa fonction.
Encore juste une interrogation, dans mon code Octave, en bas, j'aimerai que ma fonction me sorte les deux variables Ex et Em, comment faire, elles sont internes même si j'écris "global" devant... :S
Bonne journée !
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
le problème venait du fait qu'il fallait définir la taille du cube avant d'y mettre quelque chose apparemment...
Ce code fonctionne chez moi sous matlab (ça empile les matrices comme des feuilles de papier finalement) :
function [X] = loadmatrice () [matrices_tabcell, PATHNAME, FILTERINDEX] = uigetfile('*.txt','Choisissez vos matrices au format texte','MultiSelect','on') if ischar(matrices_tabcell) M=load('-ascii',strcat(PATHNAME,matrices_tabcell)); X(1,length(M),size(M,2))=zeros; X(1,:,:)=M; elseif iscell(matrices_tabcell) M=load('-ascii',strcat(PATHNAME,matrices_tabcell{1})); X(size(matrices_tabcell,2),length(M),size(M,2))=zeros; for i=1:length(matrices_tabcell) N=load('-ascii',strcat(PATHNAME,matrices_tabcell{i})); X(i,:,:)=N; end end end
et presque le même sous octave :
function [X] = loadmatrices () matrices_tabcell=0; X=0; matrices_tabcell = zenity_file_selection('Choisir fichier(s)', 'multiple'); if ischar(matrices_tabcell) M=load('-ascii',(matrices_tabcell)); X(1,length(M),size(M,2))=zeros; X(1,:,:)=M; elseif iscell(matrices_tabcell) M=load('-ascii',(matrices_tabcell{1})); X(size(matrices_tabcell,2),length(M),size(M,2))=zeros; for i=1:length(matrices_tabcell) N=load('-ascii',(matrices_tabcell{i})); X(i,:,:)=N; endfor endif X=X(:,2:end,2:end); Ex=X(1,:,2:end); Em=X(1,2:end,:); endfunction
Je n'ai pas trouvé un moyen de visualiser une tranche de la matrice sous Matlab par contre sous Octave oui, pratique si l'on veut voir un peu comment c'est organisé au début pour vérifier le bon fonctionnement de sa fonction.
Encore juste une interrogation, dans mon code Octave, en bas, j'aimerai que ma fonction me sorte les deux variables Ex et Em, comment faire, elles sont internes même si j'écris "global" devant... :S
Bonne journée !
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
déjà, fait des impressions de tes différentes valeurs : tranche, i et file_name pour vérifier que tu as bien un boucle.
tente M(i,:,:)=tranche;