2010-08-05 7 views
1

j'ai écrit la fonction suivantefonction de création Matlab

% e is n×1 and y is n×1 vectors 
function z=e_rand(e,y) 
     b_LS=regress(e,y) 
     z=b_LS*5 

J'ai sauvé la fonction dans la boîte à outils Matlab. Mais quand je course la fonction que je reçois l'erreur suivante: argument d'entrée « e » est non défini

Comment puis-je créer correctement la fonction?

+2

z = e_rand (1,1) fonctionne parfaitement – Mikhail

Répondre

6

Vous NE FAITES PAS FONCTIONNER une fonction. Vous l'utilisez dans une expression. Vous appelez votre fonction sur la ligne de commande. Mais vous n'utilisez pas la commande run sur une fonction. L'exécution est seulement pour des scripts, pas des fonctions.

Sur la ligne de commande, tapez ceci:

z = e_rand(e,y); 
0

Si vous voulez quitter votre fonction en l'état, et encapsuler votre fonction dans une autre fonction, vous devez donner des valeurs e et y dans un fonction parent.

Essayez ceci:

function parent() 
    clear all, close all 
    n = randi(10, 1) 
    e = rand(n, 1) 
    y = rand(n, 1) 
    z = e_rand(e, y) 

     % e is [n×1] and y is [n×1] vectors 
     function z = e_rand(e, y) 
       b_LS = regress(e, y) 
       z = b_LS * 5 
     end 
    end 

Travaux cités: http://www.mathworks.com/help/matlab/matlab_prog/nested-functions.html

Questions connexes