IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

PlotsFcns et getFrame


Sujet :

MATLAB

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 885
    Par défaut PlotsFcns et getFrame
    Hello

    je suis sur une optimisation (fmincon) dont le résultat est une surface
    j'ai modifier la PlotFcns optimplotx pour avoir un bel affichage pendant l'optimisation

    jusque là tout va bien
    après, comme mon optimisation dure longtemps, j'ai eu envie de l'enregistrer au format video pour la voir à posteriori ... et la ca coince
    mon code (avec en rouge mon enregistrement video) :
    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
    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
    function stop = optimplotfmc(x,optimValues,state,varargin)
    
    persistent writerObj
    
    stop = false;
    switch state
        case 'init'
    
            set(gcf,'doublebuffer','on')
            
            writerObj = VideoWriter('optimfmc.avi');
            writerObj.FrameRate = 1;
            open(writerObj);
            
        case 'done'
            
            close(writerObj);
            
            
        case 'iter'
    %         % Reshape if x is a matrix
    %         x = x(:);
    %         xLength = length(x);
    %         xlabelText = sprintf('Number of variables: %g',xLength);
    
            vx = evalin('base','vEcartHbassin');
            vy = evalin('base','vAmplCycle');
            
            x = reshape(x,numel(vy),numel(vx));
            
            [vx,vy] = meshgrid(vx,vy);
            
            
    
            % Display up to the first 100 values
    %         if length(x) > 100
    %             x = x(1:100);
    %             xlabelText = {xlabelText,sprintf('Showing only the first 100 variables')};
    %         end
            
            if optimValues.iteration == 0
                % The 'iter' case is  called during the zeroth iteration,
                % but it now has values that were empty during the 'init' case
                %plotx = plot3(vx(:),vy(:),x(:),'bo');
                plotx = surf(vx,vy,x,'edgecolor','r','FaceAlpha',0.66);
                colormap winter
    
                view(3)
                grid on
                title(sprintf('Energie = %.2f GWh',- optimValues.fval/1000),'interp','none');
                zlabel(sprintf('Current point'),'interp','none');
                ylabel('amplitude marée','interp','none');
                xlabel('ecart bassin','interp','none');
    %             set(plotx,'edgecolor','none')
    %             set(gca,'xlim',[0,1 + xLength])
                set(plotx,'Tag','optimplotfmc');
            else
                plotx = findobj(get(gca,'Children'),'Tag','optimplotfmc');
                set(plotx,'Zdata',x);
                title(sprintf('Energie = %.2f GWh',- optimValues.fval/1000),'interp','none');
            end
            
            drawnow
            frame = getframe(gcf);
            writeVideo(writerObj,frame);
            
    end
    le problème c'est que ca me récupère des frames presque vide
    presque car j'ai un système d'axe quand même, mais 2D et pas du tout à l'échelle de ce que j'affiche (en fait c'est le système d'axe à la création de la figure plotFcns)

    en pieces jointes la figure que j'essaye de capturer et la video resultat

    une idée ??

    Merci
    Fab
    Images attachées Images attachées   

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme getframe subplot
    Par j_ere_my dans le forum MATLAB
    Réponses: 2
    Dernier message: 08/07/2009, 09h51
  2. getFrame problème pour dupliquer une frame
    Par nabilous dans le forum Général Java
    Réponses: 5
    Dernier message: 24/10/2008, 16h19
  3. aide pour getframe et movie2avi
    Par helaaa dans le forum MATLAB
    Réponses: 2
    Dernier message: 14/04/2008, 10h39
  4. Problème avec getframe
    Par helaaa dans le forum MATLAB
    Réponses: 2
    Dernier message: 14/03/2008, 09h59
  5. De Getframe à movie
    Par aerolupo dans le forum MATLAB
    Réponses: 11
    Dernier message: 04/02/2008, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo