Bonjour,
j'ai différentes courbes que je voudrais afficher image par image dans une vidéo.
Mes données sont dans une matrice (qui s'appelle d) où les données sont rangées en colonnes (colonne x, puis colonne y courbe 1, re-colonne x, puis colonne y courbe 2 etc...)
J'affiche donc les courbes une par une sur une figure, et j'utilise getframe et addframe pour les ajouter à la vidéo. Mais voilà, la deuxième image n'a jamais la même taille que la première. Si la première est 435 x 343, la deuxième sera toujours 435 x 344. Donc il me met un message d'erreur.
Alors j'ai essayé de rajouter une ligne pour fixer la taille de la figure à 435 x 343 juste avant de faire le getframe. Mais là la première figure fait 338 x 277 (??) et la deuxième fait 338 x 278...
voilà le code :
Et voilà le message d'erreur avec la taille du deuxième frame en dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 XMAX=d(1,1); XMIN=d(1,1); YMAX=d(1,2); YMIN=d(1,2); for i = 1:2:(nbscan*2-1) %determine les extrema des deux axes if (max(d(:,i))>XMAX) %pour définir l'échelle de la courbe XMAX=max(d(:,i)); end if (min(d(:,i))<XMIN) XMIN=min(d(:,i)); end if (max(d(:,i+1))>YMAX) YMAX=max(d(:,i+1)); end if (min(d(:,i+1))<YMIN) YMIN=min(d(:,i+1)); end end mov = avifile('resultat.avi','Compression','Cinepak'); mov.fps = 15; figure(1) for i=1:2:(2*nbscan) axis([XMIN XMAX YMIN YMAX]) plot(d(:,i),d(:,i+1)) set(gcf,'Position',[200,200,435,343]); F = getframe(gca); mov = addframe(mov,F); end close(figure(1)) mov = close(mov);
Si quelqu'un peut m'aider ça me sauve la vie. Ca fait des heures que je cherche...??? Error using ==> avifile.addframe>ValidateFrame at 335
Frame must be 338 by 277.
Error in ==> avifile.addframe at 196
ValidateFrame(aviobj,width, height,dims);
Error in ==> resvid at 59
mov = addframe(mov,F);
>> F
F =
cdata: [278x338x3 uint8]
colormap: []
J'utilise matlab 7.6.0 (R2008a) avec windows vista
Partager