Undefined function or variable 'x'.

조회 수: 2 (최근 30일)
Alexis Riffard
Alexis Riffard 2016년 10월 4일
답변: Steven Lord 2016년 10월 4일
Hy,
I have a problem, i can't solve with my program. I download a file in mathwoks name shark it is the simulation of an underwater vehicule.
But when i try to run the functions i have this warning message Undefined function or variable 'x'.
this is the function :
function z=vp(x,y)
% z=vp(x,y); z = 3d cross product of x and y
% vp(x) is the 3d cross product matrix : vp(x)*y=vp(x,y).
z=[0 -x(3) x(2);
x(3) 0 -x(1);
-x(2) x(1) 0 ];
if nargin>1, z=z*y; end
  댓글 수: 2
Joe Yeh
Joe Yeh 2016년 10월 4일
This function runs fine on my machine. How did you call the function ?
Alexis Riffard
Alexis Riffard 2016년 10월 4일
you mean the file ? i name it vp.m

댓글을 달려면 로그인하십시오.

답변 (2개)

Mohammad Haghighat
Mohammad Haghighat 2016년 10월 4일
You cannot just "run the function" with no input arguments. It has to be called from another function and the X and Y must be given as its input arguments.

Steven Lord
Steven Lord 2016년 10월 4일
When you call the function, you must specify values for the input arguments listed in the definition of that function. In this case, that definition from the first line of the function is:
function z=vp(x,y)
This function is defined to accept two input arguments (x and y) and return one output argument (z.) Those are the maximum number of inputs and outputs you can specify. (I'm explicitly ignoring varargin and varargout in this discussion for simplicity.)
Specifying fewer output arguments than the function is defined to return is okay unless the author specifically added code to require a certain number of outputs. In this case the author did not add that code. So you can call vp with either 0 or 1 outputs; calling it with 2 will cause an error.
Specifying fewer input arguments than the function is defined to accept can be okay, but the author of the function needs to handle that case in the code itself. In this case the author did add in code to support the case where the user only specific 1 input argument, as the last line of the function. The author did not add code to support the case where the user specified 0 input arguments. So you need to call this function with either 1 or 2 input arguments; calling it with 0 inputs or more than 2 inputs will error.
Based on the error you tried to call it with 0 inputs.
vp
Specify a vector with at least three inputs as the first input argument and it will succeed. For example:
vp([1 2 3]) % or
z = vp([4; 5; 6])

카테고리

Help CenterFile Exchange에서 Argument Definitions에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by