Précédent   Forum des professionnels en informatique > Environnements de développement > MATLAB
MATLAB Forum d'entraide sur MATLAB. Avant de poster -> FAQ MATLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/02/2012, 16h15   #1
Membre à l'essai
 
Enseignant Chercheur
Inscription : décembre 2011
Messages : 98
Détails du profil
Informations professionnelles :
Activité : Enseignant Chercheur

Informations forums :
Inscription : décembre 2011
Messages : 98
Points : 20
Points : 20
Par défaut Utilisation Fichier .mat

Bonsoir
je veux afficher les résultats de mon code Matlab vers un fichier .mat pour les réutiliser ultérieurement
je sais pas comment utiliser les fichier .mat, est ce qu'il y a qq'un peut m'aider?

merci d'avance
syki.mail est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 16h20   #2
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 3 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2009
Messages : 3 598
Points : 6 824
Points : 6 824
Bonjours,

Qu'est-ce que tu entends par "afficher"?
Les fichiers .mat sont fait pour stocker des variables.

Pour les utiliser:
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Je suis régulièrement sur le chat DVP - Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 17h53   #3
Membre à l'essai
 
Enseignant Chercheur
Inscription : décembre 2011
Messages : 98
Détails du profil
Informations professionnelles :
Activité : Enseignant Chercheur

Informations forums :
Inscription : décembre 2011
Messages : 98
Points : 20
Points : 20
je veux dire sauvegarder les résultats.voila le pb:
j'ai un problème au niveau de la saturation de la mémoire.

j'ai 3 parties dans mon programme; chacune contient des calcules lourds.
je peux exécuter la partie 1 et puis je fais 'save' pour sauver les résultats.
puis au début de la partie 2, je fais load des résultats de la partie 1.....


comme ça est ce que l'utilisation de save et load peut être une solution pour résoudre le problème de la saturation de la mémoire?
syki.mail est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 18h19   #4
Membre à l'essai
 
Enseignant Chercheur
Inscription : décembre 2011
Messages : 98
Détails du profil
Informations professionnelles :
Activité : Enseignant Chercheur

Informations forums :
Inscription : décembre 2011
Messages : 98
Points : 20
Points : 20
par exemple si j'ai une matrice M comme résultats de la partie 1
je dois alors mettre a la fin de la partie 1:

Code :
1
2
save(nom fichier.mat, 'M');
puis juste au debut de la partie 2 je dois mettre:
Code :
1
2
x=load(nom fichier.mat,  'M');
est ce que c'est juste?
a+
syki.mail est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 18h36   #5
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 3 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2009
Messages : 3 598
Points : 6 824
Points : 6 824
Oui c'est juste, avec le nom du fichier entre guillemets comme M
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Je suis régulièrement sur le chat DVP - Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 20h58   #6
Membre à l'essai
 
Enseignant Chercheur
Inscription : décembre 2011
Messages : 98
Détails du profil
Informations professionnelles :
Activité : Enseignant Chercheur

Informations forums :
Inscription : décembre 2011
Messages : 98
Points : 20
Points : 20
mais ça ne résout pas encore le pb de saturation de la mémoire , j’obtiens encore l'erreur:
Citation:
??? Out of memory. Type HELP MEMORY for your options.
qu'est ce que vous me proposez?
syki.mail est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 21h13   #7
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 3 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2009
Messages : 3 598
Points : 6 824
Points : 6 824
Et pourrait-on savoir quel est le code qui produit cette erreur?

Un peu de lecture: Out of memory. Type HELP MEMORY for your options.
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Je suis régulièrement sur le chat DVP - Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 09h53   #8
Membre à l'essai
 
Enseignant Chercheur
Inscription : décembre 2011
Messages : 98
Détails du profil
Informations professionnelles :
Activité : Enseignant Chercheur

Informations forums :
Inscription : décembre 2011
Messages : 98
Points : 20
Points : 20
bonjour

oui j'ai bien lu ce FAQ. mais j'ai pas trouver une solution a mon pb.
comme j'ai mentionner en haut, mon code contient des parties pour chaque partie j'ai des traitements sur mes vidéos.

les résultats de traitement 1 vont être utiliser par le traitement2, les résultats de traitement 2 utiliser pour le traitement 3....

juste au niveau de traitement 2 l’exécution s’arrête et l'erreur apparait.
je sais pas comment je peux vous montrer le code car c très long.

des idées SVP
syki.mail est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 10h24   #9
Dut
Rédacteur/Modérateur
 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 12 919
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 12 919
Points : 15 900
Points : 15 900
Monter nous ton code.
Sans ça, nous ne pourrons pas t'aider efficacement.
__________________
Mes contributions MATLAB (R2009a - Windows & Linux)

• J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" (Saint Huck)
• Des larmes coulèrent doucement des yeux fermés du vieil homme. Moi je pleurais comme un enfant, que d'ailleurs pour lui je ne cesserais d'être ma vie durant (Amkoullel)

• Lâché de Mogwai sur St Malo... aie aie aie... ouille ouille ouille
Dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 13h54   #10
Membre à l'essai
 
Enseignant Chercheur
Inscription : décembre 2011
Messages : 98
Détails du profil
Informations professionnelles :
Activité : Enseignant Chercheur

Informations forums :
Inscription : décembre 2011
Messages : 98
Points : 20
Points : 20
le code est le suivant:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
clc;
clear all;
disp (' Creation de la structure du travail pour la reconnaissance d"actions en vidéo...')
conf.calDir = 'C:\code\dataset\KTH' ;
conf.dataDir = 'C:\data\' ;
%conf.dataDir = 'data\' ;
conf.numTrain = 1 ;
conf.numTest = 2 ;
conf.numClasses = 3;
conf.numWords = 1000 ;
conf.quantizer = 'kdtree' ;
conf.svm.C = 10 ;
conf.svm.solver = 'pegasos' ;
conf.svm.biasMultiplier = 1 ;
% PREFIX
conf.prefix = 'baseline' ;
% creation des fichiers .mat
conf.vocabTPath = fullfile(conf.dataDir, [conf.prefix '-vocabT.mat']) ;
conf.vocabSPath = fullfile(conf.dataDir, [conf.prefix '-vocabS.mat']) ;
conf.BOWTPath = fullfile(conf.dataDir, [conf.prefix '-BOWTApp.mat']) ;
conf.BOWSPath = fullfile(conf.dataDir, [conf.prefix '-BOWSApp.mat']) ;
conf.histsTPath=fullfile(conf.dataDir, [conf.prefix '-BOWTT.mat']) ;
conf.histsSPath=fullfile(conf.dataDir, [conf.prefix '-BOWTS.mat']) ;
conf.modelPath = fullfile(conf.dataDir, [conf.prefix '-model.mat']) ;
conf.TrajAppPath = fullfile(conf.dataDir, [conf.prefix 'trajectoriesApp']) ;
conf.siftaccAppPath = fullfile(conf.dataDir, [conf.prefix '-siftaccApp']) ;
conf.TrajtotPath = fullfile(conf.dataDir, [conf.prefix 'trajectories']) ;
conf.siftacctotPath = fullfile(conf.dataDir, [conf.prefix '-siftacc']) ;
% Model trained: model.mat
conf.modelPath = fullfile(conf.dataDir, [conf.prefix '-model.mat']) ;
conf.resultPath = fullfile(conf.dataDir, [conf.prefix '-result.mat']) ;
% --------------------------------------------------------------------
%                        création de la structure des classes
% --------------------------------------------------------------------
classes = dir(conf.calDir) ;
classes = classes([classes.isdir]) ;
classes = {classes(3:conf.numClasses+2).name};
videos = {} ;
videoClass = {} ;
for ci = 1:length(classes)
    vids = dir(fullfile(conf.calDir, classes{ci}, '*.avi'))' ;

    vids = vl_colsubset(vids, conf.numTrain + conf.numTest) ;
    vids = cellfun(@(x)fullfile(classes{ci},x),{vids.name},'UniformOutput',false) ;
    videos = {videos{:}, vids{:}} ;
    videoClass{end+1} = ci * ones(1,length(vids)) ;
end
selTrain = find(mod(0:length(videos)-1, conf.numTrain+conf.numTest) < conf.numTrain) ;
selTest = setdiff(1:length(videos), selTrain) ;
videoClass = cat(2, videoClass{:}) ;
model.classes = classes ;
model.quantizer = conf.quantizer ;
model.vocab = [] ;
model.w = [] ;
model.b = [] ;
model.classify = @classify ;
%------------------------ traitement------------------%
disp('extraction des descripteurs de la base d"apprentissage: training...');
selTrainFeats = vl_colsubset(selTrain,5*10) ;
trajectoriesApp = {} ;
siftaccApp= {};
siftspatialApp={};
X={};
Y={};
for ii = 1:length(selTrainFeats)
    video =fullfile(conf.calDir, videos{selTrainFeats(ii)}) ;
    [X{ii} Y{ii}]= calcultrajectoires(video);
    close all;
    siftaccApp{ii}=calculsiftacc(video, X{ii} ,Y{ii} );
    siftspatialApp{ii}=siftspatial(video, X{ii} ,Y{ii});
end
disp('creartion de vocabulaire par kmeans pour la base d"apprentissage ...');

%------------ traitement 1----------------------------------%

siftaccAp=cat(1,siftaccApp{:});
siftspaApp=cat(1, siftspatialApp{:});
[dommy3 vocabSS]= k_means(siftspaApp, 300);
[domy2  vocabS] = k_means(siftaccAp, 1000);

%------------------------ traitement2----------------------------- %
disp ('calcul des descripteurs pour toute la base...')

nbp=0;
for ii = 1:length(videos)
    length(videos)) ;
    video= fullfile(conf.calDir, videos{ii}) ;
    [ X{ii} Y{ii} ]= calcultrajectoires(video);
    close all;
    [n m]=size(X{ii});
    nbp=nbp+n*m;
    %code s'arrete iciiiiii:
    siftacc{ii}=calculsiftacc(video, X{ii} ,Y{ii} );
    siftspa{ii}=siftspatial(video, X{ii} ,Y{ii});

end
% --------------------------------------------------------------------
%                                           traitement 3
% --------------------------------------------------------------------

BOWTT={};
BOWTS={};
BOWTSP={};
for ii = 1:length(videos)
    [BOWTS{ii}] = calcVisualWordHist (siftacc{ii},vocabS);
    [BOWTSP{ii}] = calcVisualWordHist (siftspa{ii},vocabSS);
end
BOWTTM = cat(2, BOWTT{:}) ;
BOWTSM = cat(2, BOWTS{:}) ;
BOWTSPM = cat(2, BOWTSP{:}) ;
save(conf.histsTPath, 'BOWTTM') ;
save(conf.histsSPath, 'BOWTSM') ;
BOW=[ BOWTSM ;BOWTSPM];
l'erreur provient au cours de traitement de vidéo au niveau de l'instruction suivante: (ligne 93)
Code :
siftacc{ii}=calculsiftacc(video, X{ii} ,Y{ii} );
syki.mail est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 14h27   #11
Dut
Rédacteur/Modérateur
 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 12 919
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 12 919
Points : 15 900
Points : 15 900
Première remarque, pourquoi stocker les valeurs de X et Y dans des tableaux de cellules alors que tu n'en t'en sert qu'une seule fois ?

Remplace [ X{ii} Y{ii} ]= calcultrajectoires(video); par [ X Y ]= calcultrajectoires(video); et X{ii} par X dans la suite du code (idem pour Y)

Ensuite, à la fin du traitement 1, nettoie les variables devenues inutiles :

Code :
clear siftaccApp siftspatialApp dommy3 domy2
Dis nous si cela résout ton problème.
__________________
Mes contributions MATLAB (R2009a - Windows & Linux)

• J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" (Saint Huck)
• Des larmes coulèrent doucement des yeux fermés du vieil homme. Moi je pleurais comme un enfant, que d'ailleurs pour lui je ne cesserais d'être ma vie durant (Amkoullel)

• Lâché de Mogwai sur St Malo... aie aie aie... ouille ouille ouille
Dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 10h43   #12
Membre à l'essai
 
Enseignant Chercheur
Inscription : décembre 2011
Messages : 98
Détails du profil
Informations professionnelles :
Activité : Enseignant Chercheur

Informations forums :
Inscription : décembre 2011
Messages : 98
Points : 20
Points : 20
bonjour
comment je fais ce changement alors que j'ai une boucle for??
cette boucle va traiter tt mes vidéo, vidéo par vidéo. a la fin de cette boucle "siftaccApp" et "siftspatialApp" sont les résultats de traitement de tt ma base vidéo.
Code :
1
2
3
4
5
6
7
8
9
10
11
12

for ii = 1:length(selTrainFeats)
  
    video =fullfile(conf.calDir, videos{selTrainFeats(ii)}) ;
    [X{ii} Y{ii}]= calcultrajectoires(video);
    close all;
   
     siftaccApp{ii}=calculsiftacc(video, X{ii} ,Y{ii} );
     siftspatialApp{ii}=siftspatial(video, X{ii} ,Y{ii});
   
  end
syki.mail est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 11h00   #13
Dut
Rédacteur/Modérateur
 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 12 919
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 12 919
Points : 15 900
Points : 15 900
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
for ii = 1:length(selTrainFeats)
  
    video =fullfile(conf.calDir, videos{selTrainFeats(ii)}) ;
    [X Y]= calcultrajectoires(video);
    close all;
   
     siftaccApp{ii}=calculsiftacc(video, X, Y);
     siftspatialApp{ii}=siftspatial(video, X, Y);
   
end

disp('creartion de vocabulaire par kmeans pour la base d"apprentissage ...');

%------------ traitement 1----------------------------------%

siftaccAp=cat(1,siftaccApp{:});
siftspaApp=cat(1, siftspatialApp{:});
[dommy3 vocabSS]= k_means(siftspaApp, 300);
[domy2  vocabS] = k_means(siftaccAp, 1000);

clear siftaccApp siftspatialApp dommy3 domy2
__________________
Mes contributions MATLAB (R2009a - Windows & Linux)

• J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" (Saint Huck)
• Des larmes coulèrent doucement des yeux fermés du vieil homme. Moi je pleurais comme un enfant, que d'ailleurs pour lui je ne cesserais d'être ma vie durant (Amkoullel)

• Lâché de Mogwai sur St Malo... aie aie aie... ouille ouille ouille
Dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2012, 21h47   #14
Membre à l'essai
 
Enseignant Chercheur
Inscription : décembre 2011
Messages : 98
Détails du profil
Informations professionnelles :
Activité : Enseignant Chercheur

Informations forums :
Inscription : décembre 2011
Messages : 98
Points : 20
Points : 20
Bonsoir
même avec cette correction j'obtiens la même erreur.

l’exécution ne dépasse pas le premier traitement.
je sais que mon calcule est lourd puisque je traite une base vidéo (chaque vidéo a peu prés 360 images), mais je peux pas changer le traitement. déjà le code fonctionne correctement avec seulement 20 images.

aidez moi !
syki.mail est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2012, 11h51   #15
Dut
Rédacteur/Modérateur
 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 12 919
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 12 919
Points : 15 900
Points : 15 900
La technique est toujours la même. Il faut diminuer la quantité de mémoire nécessaire à chaque étape en divisant les tâches en sous-tâches :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
for ii = 1:length(selTrainFeats)
  
    video = fullfile(conf.calDir, videos{selTrainFeats(ii)}) ;
    [X Y] = calcultrajectoires(video);
    close all;
   
     siftaccApp{ii} = calculsiftacc(video, X, Y);

end

clear X Y

siftaccAp = cat(1,siftaccApp{:});
clear siftaccApp

[domy2  vocabS] = k_means(siftaccAp, 1000);
clear domy2 siftaccAp

for ii = 1:length(selTrainFeats)
  
    video = fullfile(conf.calDir, videos{selTrainFeats(ii)}) ;
    [X Y] = calcultrajectoires(video);
    close all;
   
    siftspatialApp{ii} = siftspatial(video, X, Y);

end

clear X Y

siftspaApp = cat(1, siftspatialApp{:});
clear siftspatialApp

[dommy3 vocabSS] = k_means(siftspaApp, 300);
clear siftspaApp dommy3
Il faut que tu analyses chaque ligne de ton code à la main.
Essaie d'évaluer la taille maximale de chaque variable (voir Comment déterminer approximativement la quantité de mémoire nécessaire pour le stockage d'une variable ?). Cela te donnera une idée de la quantité de mémoire (RAM+virtuelle) minimale nécessaire pour effectuer ton calcul.

Sur quel type de machine travailles-tu ? 32bits ou 64bits ?
Il serait peut être préférable d'envisager la migration du code sur une machine 64bits avec beaucoup de RAM.
__________________
Mes contributions MATLAB (R2009a - Windows & Linux)

• J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" (Saint Huck)
• Des larmes coulèrent doucement des yeux fermés du vieil homme. Moi je pleurais comme un enfant, que d'ailleurs pour lui je ne cesserais d'être ma vie durant (Amkoullel)

• Lâché de Mogwai sur St Malo... aie aie aie... ouille ouille ouille
Dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2012, 18h42   #16
Membre à l'essai
 
Enseignant Chercheur
Inscription : décembre 2011
Messages : 98
Détails du profil
Informations professionnelles :
Activité : Enseignant Chercheur

Informations forums :
Inscription : décembre 2011
Messages : 98
Points : 20
Points : 20
BONSOIR
Merci pour la reponse
32 Bits avec Ram 1GO
syki.mail est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2012, 19h21   #17
Dut
Rédacteur/Modérateur
 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 12 919
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 12 919
Points : 15 900
Points : 15 900
Citation:
Envoyé par syki.mail Voir le message
32 Bits avec Ram 1GO
C'est en effet une configuration un peu faible...
__________________
Mes contributions MATLAB (R2009a - Windows & Linux)

• J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" (Saint Huck)
• Des larmes coulèrent doucement des yeux fermés du vieil homme. Moi je pleurais comme un enfant, que d'ailleurs pour lui je ne cesserais d'être ma vie durant (Amkoullel)

• Lâché de Mogwai sur St Malo... aie aie aie... ouille ouille ouille
Dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2012, 08h38   #18
Membre à l'essai
 
Enseignant Chercheur
Inscription : décembre 2011
Messages : 98
Détails du profil
Informations professionnelles :
Activité : Enseignant Chercheur

Informations forums :
Inscription : décembre 2011
Messages : 98
Points : 20
Points : 20
Citation:
Envoyé par Dut Voir le message
La technique est toujours la même. Il faut diminuer la quantité de mémoire nécessaire à chaque étape en divisant les tâches en sous-tâches :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
for ii = 1:length(selTrainFeats)
  
    video = fullfile(conf.calDir, videos{selTrainFeats(ii)}) ;
    [X Y] = calcultrajectoires(video);
    close all;
   
     siftaccApp{ii} = calculsiftacc(video, X, Y);

end

clear X Y

siftaccAp = cat(1,siftaccApp{:});
clear siftaccApp

[domy2  vocabS] = k_means(siftaccAp, 1000);
clear domy2 siftaccAp

for ii = 1:length(selTrainFeats)
  
    video = fullfile(conf.calDir, videos{selTrainFeats(ii)}) ;
    [X Y] = calcultrajectoires(video);
    close all;
   
    siftspatialApp{ii} = siftspatial(video, X, Y);

end

clear X Y

siftspaApp = cat(1, siftspatialApp{:});
clear siftspatialApp

[dommy3 vocabSS] = k_means(siftspaApp, 300);
clear siftspaApp dommy3
Il faut que tu analyses chaque ligne de ton code à la main.
Essaie d'évaluer la taille maximale de chaque variable (voir Comment déterminer approximativement la quantité de mémoire nécessaire pour le stockage d'une variable ?). Cela te donnera une idée de la quantité de mémoire (RAM+virtuelle) minimale nécessaire pour effectuer ton calcul.

Sur quel type de machine travailles-tu ? 32bits ou 64bits ?
Il serait peut être préférable d'envisager la migration du code sur une machine 64bits avec beaucoup de RAM.
bonne solution, mais est ce que vous pouvez me dire comment je peux exécuter la premier boucle pour 10 vidéo seulement puis je sauvegarde les résultats. ensuite exécuter la même boucle pour 10 autres vidéos. puis je concatène les deux résultats pour l'utiliser au traitement suivant.
Le code fonctionne pour 10 vidéo seulement(j'ai 24 vidéos au total selTrainFeats=24) puis s'affiche l'erreur:
Citation:
Out of memory. Type Help Memory for your options
est ce que cette solution peut réduire le nombre de variable en mémoire.
syki.mail est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2012, 09h23   #19
Dut
Rédacteur/Modérateur
 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 12 919
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 12 919
Points : 15 900
Points : 15 900
Citation:
Envoyé par syki.mail Voir le message
est ce que cette solution peut réduire le nombre de variable en mémoire.
Tu peux toujours essayer comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for ii = 1:length(selTrainFeats)
  
    video = fullfile(conf.calDir, videos{selTrainFeats(ii)}) ;
    [X Y] = calcultrajectoires(video);
    close all;
    
    siftaccApp = calculsiftacc(video, X, Y);
    
    clear X Y
    
    filename = sprintf('siftaccApp%02d.mat',ii);
    
    save(filename,'siftaccApp','-mat')
    
    clear siftaccApp
    
end
Mais tu retrouveras très certainement le même message d'erreur lorsque tu essayeras d'assembler tous les fichiers mat :

Code :
1
2
3
4
5
6
7
8
9
siftaccAp = [];

for ii = 1:length(selTrainFeats)
    
    filename = sprintf('siftaccApp%02d.mat',ii);
    
    siftaccAp = [siftaccAp ; load(filename,'-mat')];
    
end
D'ailleurs, quelles sont les dimensions de la variable siftaccApp dans la première boucle ?

Sinon, quelle est la marque et le modèle de ta machine ?
Tu devrais normalement pouvoir assez facilement ajouter au moins 1Go de RAM. Le prix des barrettes a bien chuté ces derniers temps.
__________________
Mes contributions MATLAB (R2009a - Windows & Linux)

• J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" (Saint Huck)
• Des larmes coulèrent doucement des yeux fermés du vieil homme. Moi je pleurais comme un enfant, que d'ailleurs pour lui je ne cesserais d'être ma vie durant (Amkoullel)

• Lâché de Mogwai sur St Malo... aie aie aie... ouille ouille ouille
Dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2012, 20h46   #20
Membre à l'essai
 
Enseignant Chercheur
Inscription : décembre 2011
Messages : 98
Détails du profil
Informations professionnelles :
Activité : Enseignant Chercheur

Informations forums :
Inscription : décembre 2011
Messages : 98
Points : 20
Points : 20
Bonsoir
je reviens à l'utilisation de fichier .mat.
J'utilise les fonctions "save et load" pour mettre les vecteurs[X Y] résultats dans un fichier.mat à fin de libérer la mémoire.
j'ai fais une boucle qui exécute le calcule 3 fois, et à chaque fois je dois enregistrer les vecteurs résultats dans le fichier.mat
Alors je dois sauver les vecteurs (qui sont des doubles) successivement pour les utilisés ultérieurement.
Code :
1
2
3
4
5
6
  for ii = 1:length(selTrainFeats)
    video =fullfile(conf.calDir, videos{selTrainFeats(ii)}) ;
    [X Y]= versionTrajectoir(video);
    save('descripteurs.mat', 'X', 'Y','-append');
    clear X Y
je n'ai pas obtenu la concaténation de touts les vecteurs résultats lorsque j'affiche le contenu de fichier.mat ( il y a des vecteurs manquantes).
Autre question:
on suppose que les vecteurs résultats finaux sont bien placés dans le fichier.mat, maintenant je veux récupérer 100000 Vecteurs aléatoirement on appliquant la fonction rand.
Pouvez vous m'aider?
syki.mail est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h20.


 
 
 
 
Partenaires

Hébergement Web