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 :

Erreur script matlab


Sujet :

MATLAB

  1. #1
    Membre extrêmement actif
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Points : 858
    Points
    858
    Par défaut Erreur script matlab
    Salut a tous et merci pour lire ma question!

    J'ai fait un script en matlab qui utilise le script load_image.m qui a le contenu suivant:

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    function y = load_image(type, n)
     
    % load_image - load benchmark images.
    %
    %   y = load_image(type, n);
    %
    %   type can be
    %   'chessboard1', 'boat', 'lena', 'goldhill', 'mandrill', 'maurice'.
    %   
    %   Copyright (c) 2004 Gabriel Peyr
     
    if nargin<2
        n = 512;
    end
     
    type = lower(type);
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % for the line, can be vertical / horizontal / diagonal / qcq
    if strcmp(type, 'line')
        eta = 0.1;              % translation
        gamma = 1/sqrt(2);      % slope
    elseif strcmp(type, 'line_vertical')
        eta = 0.5;              % translation
        gamma = 0;      % slope
    elseif strcmp(type, 'line_horizontal')
        eta = 0.5;              % translation
        gamma = Inf;      % slope
    elseif strcmp(type, 'line_diagonal')
        eta = 0;              % translation
        gamma = 1;      % slope
    end
     
    r = 0.6;    % radius
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    switch type
        case 'chessboard1'
            x = -1:2/(n-1):1;
            [Y,X] = meshgrid(x,x);
            y = (2*(Y>=0)-1).*(2*(X>=0)-1);
     
        case 'square'
            x = -1:2/(n-1):1;
            [Y,X] = meshgrid(x,x);
            y = max( abs(X),abs(Y) )<r;
     
        case {'line', 'line_vertical', 'line_horizontal', 'line_diagonal'}
            x = 0:1/(n-1):1;
            X = x'*ones(1,n);
            if gamma~=Inf
                y = (X-eta) - gamma*X' < 0;
            else
                y = (X'-eta) < 0;
            end
     
        case 'disk'
            radius = 0.35;
            x = 0:1/(n-1):1;
            [Y,X] = meshgrid(x,x);
            center = [0.5, 0.5];    % center of the circle
            y = (X-center(1)).^2 + (Y-center(2)).^2 < radius^2;
     
        case 'quarterdisk'
            radius = 0.95;
            x = 0:1/(n-1):1;
            [Y,X] = meshgrid(x,x);
            center = -[0.1, 0.1];    % center of the circle
            y = (X-center(1)).^2 + (Y-center(2)).^2 < radius^2;
     
        case '3contours'        
            r1 = 1.3;
            ct1 = [-1, 1];
            r2 = 0.8;
            ct2 = [0, 0];
            x = 0:1/(n-1):1;
            [Y,X] = meshgrid(x,x);
            f1 = (X-ct1(1)).^2 + (Y-ct1(2)).^2 < r1^2;
            f2 = (X-ct2(1)).^2 + (Y-ct2(2)).^2 < r2^2;
            y = f1 + 0.5*f2.*(1-f1);
     
        otherwise
            y = imread( [type, '.jpg'] );
            y = double(y);
            if n~=size(y, 1)
                y = image_resize(y,n,n);
            end
    end
     
    y = double(y);
    Le probleme c'est que mon script n'a pas aucune probleme mais malheuresement il se lie avec load_image.m et il me donne a cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    y = image_resize(y,n,n);
    L'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ??? Undefined function or method 'image_resize' for input arguments of type 'double'.
     
    Error in ==> load_image at 86
                y = image_resize(y,n,n);
    Si quelqu'un peut m'aider comment faire pour supprimer l'erreur je serais reconnaisant!

    Parce que ca me bloque pour avancer dans mon projet.

  2. #2
    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
    Bonjour,

    ou as-tu récupéré le script load_image.m? Il n'y avait pas un script image_resize.m avec?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Pour être précis, ce ne sont pas des scripts mais des fonctions... la différence se situe dans la déclaration de la première ligne du fichier m
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « 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)

  4. #4
    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
    Oui, effectivement

    ce qui est sur, c'est qu'il manque un fichier pour que MATLAB puisse continuer....
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Membre extrêmement actif
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Points : 858
    Points
    858
    Par défaut
    Oui c'etait ca.

    Maintenant ca me donne une autre erreur dans mon script.

    Je vous explique en fait ce que je suis en train de faire. Je veux faire la transformation haar 2d en utilisant le paragraphe "Forward 2D Haar transform"

    http://www.ceremade.dauphine.fr/~pey...avelet_haar2d/


    J'ai déjà les scripts load_image.m et image_resize dans le path du matlab.

    Voila le code: (haar_transf.m)

    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
     
    % haar 2d transform
     
     
     
    % read the RGB image
     
    % RGB = imread('102.jpg');
    % imshow(RGB);
    % title('This is the 102.jpg picture in RGB mode');
     
    %  % read the grayscale image
     
    %  I  = rgb2gray(RGB); % convert to grayscale
    %  figure,imshow(I);
    %  title('This is the 102.jpg picture in GRAYSCALE mode');
     
     
    name = 'photo_grey';
    n = 256;
    M = load_image(name,n);
     
    %M = rescale(crop(M,n));
     
     
    MW = M;
    j = log2(n)-1;
     
    %Select the sub-part of the image to transform.
     
    A = MW(1:2^(j+1),1:2^(j+1));
     
    %Compute average and differences along the vertical direction.
     
    Average_vert = ( A(1:2:size(A,1),:) + A(2:2:size(A,1),:) )/sqrt(2);
    Differences_vert = ( A(1:2:size(A,1),:) - A(2:2:size(A,1),:) )/sqrt(2);
     
    %Concatenate them in the vertical direction to get the result.
     
    A = cat3(1, Average_vert, Differences_vert );
     
    % Display the result of the vertical transform.
     
    %clf; % clear figure
    imageplot(M,'Original image',1,2,1);
    imageplot(A,'Vertical transform',1,2,2);
     
    % Compute average and differences along the horizontal direction.
     
    Average_horiz = ( A(:,1:2:size(A,1)) + A(:,2:2:size(A,1)) )/sqrt(2);
    Differences_horiz = ( A(:,1:2:size(A,1)) - A(:,2:2:size(A,1)) )/sqrt(2);
     
    % Concatenate them in the horizontal direction to get the result.
     
    A = cat3(2, Average_horiz, Differences_horiz );
     
    % Assign the transformed data.
     
    MW(1:2^(j+1),1:2^(j+1)) = A;
     
    % Display the result of the horizontal transform.
     
    clf;
    imageplot(M,'Original image',1,2,1);
    subplot(1,2,2);
    plot_wavelet(MW,log2(n)-1); 
    title('Transformed');
    Quand je lance haar_transf.m

    Erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ??? Undefined function or method 'cat3' for input arguments of type 'double'.
     
    Error in ==> haar_transf at 39
    A = cat3(1, Average_vert, Differences_vert );
    Il est possible que cat3 est aussi une fonction mais j'ai pas trouve le script.

    La meme chose pour plot_wavelet et imageplot.

    Merci de m'aider!

    Voila la photo nomme photo_grey parce seulement a ca je peux faire la transformation wavelet. J'ai encore des soucis mais pour l'instant je veux resoudre ca: (puis j'ouvre un autre message avec l'autre souci que j'ai)


    http://img13.imageshack.us/img13/7281/photogrey.jpg


    J'attends vos avis!

    Amicalment,

    Michel

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Je pense que c'est une erreur de typo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A = cat3(2, Average_horiz, Differences_horiz );
    devient simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A = cat(2, Average_horiz, Differences_horiz );
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « 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)

  7. #7
    Membre extrêmement actif
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Points : 858
    Points
    858
    Par défaut
    J'ai resolu!

    Merci beaucoup a tous!

    Maintenant ce que je veux c'est trouver une maniere pour stoquer pour une image les coefficient wavelet qui decrit le degre de blur d'une image.


    Donc j'ouvre un autre poste qui se penche sur "haar 2d approximation".

    Si quelqu'un a besoin de la source il peut la trouver ici.

    http://www.mediafire.com/?t2gondowgjv

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

Discussions similaires

  1. erreur script perl
    Par infernal1022 dans le forum Langage
    Réponses: 2
    Dernier message: 18/06/2007, 10h49
  2. erreur script vbs
    Par france38 dans le forum VBScript
    Réponses: 4
    Dernier message: 14/10/2006, 10h50
  3. erreur script javascript
    Par speedylol dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/08/2006, 13h15
  4. [Configuration] affichage video erreur script
    Par zorrax dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 26/02/2006, 15h35
  5. [VB.NET] Erreur script client
    Par Sadneth dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/03/2005, 08h33

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