Créer un "cube" de données sous octave/matlab
Fermé
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
-
Modifié par Swiss Knight le 14/06/2011 à 16:14
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 15 juin 2011 à 08:36
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 15 juin 2011 à 08:36
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 compte gmail - Guide
- Créer un compte instagram sur google - Guide
- Créer un lien pour partager des photos - Guide
2 réponses
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
110
14 juin 2011 à 16:27
14 juin 2011 à 16:27
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... :'(
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
110
Modifié par Swiss Knight le 15/06/2011 à 08:39
Modifié par Swiss Knight le 15/06/2011 à 08:39
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-
14 juin 2011 à 16:47
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;
14 juin 2011 à 16:51