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 :

[fminsearch][Error] Conversion to double from struct is not possible.


Sujet :

MATLAB

  1. #1
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut [fminsearch][Error] Conversion to double from struct is not possible.
    bonjour
    j'ai une courbe de référence refCurve et une courbe mesurée lrMean.
    la fonction ecart me permet de mesurer l'écart entre les deux.
    j'aimerais translater la courbe de référence afin de minimiser cet écart, donc ajouter une valeur fixe à l'ensembles des points de la courbe mesurée.
    pour ceci j'ai pensé à utiliser la fonction fminsearch mais elle me renvoie une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fminsearch(@(y) ecart(refCurve,absc,lrMean+y,0),-10);
    ??? The following error occurred converting from struct to double:
    Error using ==> double
    Conversion to double from struct is not possible.

    Error in ==> fminsearch at 205
    fv(:,1) = funfcn(x,varargin{:});
    merci si vous pouvez comprendre d'où peut venir le problème

  2. #2
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Quel est le type et la taille de :

    refCurve et lrMean
    Assigning to an Empty Structure Field

    Attempting to assign a structure to a field of another structure now results in an error if both of the following conditions are true:

    • The field being assigned to has been initialized to an empty matrix.
    • The field being assigned to is referenced in the assignment using an array index.

    For example:

    • mystruct.emptyfield = [];
      mystruct.emptyfield(1) = struct('f1', 25);
      ??? Conversion to double from struct is not possible.

    This operation did not return an error in previous versions of MATLAB.

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Salut,

    Je pense que ton problème vient du 'lrMean+y' que tu passes en entrée de ta fonction. Essaie comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fminsearch(@(y) ecart(y,refCurve,absc,lrMean,0),-10);
    et modifie ta fonction ecart en conséquence.

  4. #4
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    When I run the following command:

    property = blkproc(glcmPixel, [9 9], @(e) graycoprops(e());

    I get the following error:

    ??? Conversion to double from struct is not possible.

    Error in ==> blkproc at 150
    b(brows, bcols) = firstBlock;

    How can I fix it?

    Thanks.

    nrowb = size(glcmPixel,1) / 9;
    ncolb = size(glcmPixel,2) / 9;
    blocks = mat2cell(glcmPixel, repmat(9, 1, nrowb), repmat(9, 1, ncolb));
    property = cellfun(@(e) graycoprops(e(), blocks);
    > When I run the following command:

    > property = blkproc(glcmPixel, [9 9], @(e) graycoprops(e());

    graycoprops expects as input the N x N matrix (default 8 x 8)
    that results from graycomatrix. You aren't giving it that
    complete matrix: you are giving it the column-wise unraveling of
    the matrix. The resulting statistics are likely to be meaningless.

    Also, as the default output for graycomatrix is 8 x 8, it would
    very likely be an error to be applying graycoprops to a 9 x 9
    matrix -- unless you had specifically used 'NumLevels', 9
    in the graycomatrix call.

    My previous response in this topic copied your function behaviour
    rather than giving what would be more likely the correct behaviour.
    The code that would be more likely correct would be:

    nrowb = size(glcmPixel,1) / 8;
    ncolb = size(glcmPixel,2) / 8;
    blocks = mat2cell(glcmPixel, repmat(8, 1, nrowb), repmat(8, 1, ncolb));
    property = cellfun(@graycoprops, blocks);

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/08/2014, 20h57
  2. Réponses: 2
    Dernier message: 28/11/2013, 19h59
  3. message :conversion double from struct impossible
    Par oliv27400 dans le forum Images
    Réponses: 0
    Dernier message: 02/07/2010, 10h42
  4. Réponses: 4
    Dernier message: 25/02/2010, 18h14
  5. Conversion en double et notation scientifique
    Par bert24 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/09/2005, 14h26

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