MATLAB Answers

Why do I get the error "Undefined function or variable"?

11,347 views (last 30 days)
I am receiving the following error message, how can I resolve this issue?
??? Undefined function or variable ‹FunctionName›
??? Undefined function or method ‹FunctionName› for input arguments of type ‹ClassName›.

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 27 Sep 2019
Edited: MathWorks Support Team on 27 Sep 2019
MATLAB does not recognize the specified string as the name of a function on the MATLAB path or as a variable. "Undefined function or variable" can be caused by:
1) A typographical error when typing a function or variable name (such as typing a 1 [one] when you intended to type an l [low-case L]). However, later versions of MATLAB try to resolve these typos with “Did you mean” suggestions. For example,
foo = 42;
fo0
Undefined function or variable 'fo0'.
Did you mean:
>> foo
2) The wrong case for a function or variable name. Later versions of MATLAB try to resolve these typos with “Did you mean” suggestions.
3) Changing directories so that a function you used is no longer on the MATLAB path.
4) Trying to use a function for which you are not licensed or that belongs to a toolbox that isn’t installed. In later versions of MATLAB, this is not an “Undefined function or variable” error, and MATLAB lets you know that you are either not licensed to use the function or the appropriate toolbox is not installed.
5) Calling an object method without an object as the first input.
6) Using a MEX function that is compiled on a platform different from the one in use.
Solution:
Verify that the undefined function or variable is visible (it is on the path or in the current workspace) and that it has been defined before this line of code executes.
If you are certain the variable or function exists, verify the case of the function or variable name. If the undefined identifier is a function, the 'which' function can help you verify that it is visible to the function where the error occurs.
If you are having problems with your MATLAB search path, run the following MATLAB commands and then restart MATLAB.
restoredefaultpath % This will remove any custom paths
rehash toolboxcache
savepath
Example demonstrating this error:
UndefinedFunctionOrVariable.m (attached)

  5 Comments

Show 2 older comments
Walter Roberson
Walter Roberson on 2 Jul 2017
The routine is new in the examples as of R2015a, but the location of the file did move as of R2017a, moving from toolbox/antenna/atexamples/dipole_tuner.m to examples/antenna/dipole_tuner.m
Neeli Sai Krishna
Neeli Sai Krishna 5 minutes ago
By the way why the error occured in this 'dipole' code, as code seems ok.
can anyone explain ....??
Walter Roberson
Walter Roberson 9 minutes ago
eeli Sai Krishna: please give more information about what code you are executing, and which MATLAB release you are using.

Sign in to comment.

More Answers (24)

Iman Tahamtan
Iman Tahamtan on 25 Mar 2018
I am facing this error when running y_lambda=lambda: Undefined function or variable 'lambda'.

  1 Comment

Walter Roberson
Walter Roberson on 26 Mar 2018
Where do you expect that your program should be getting a value of lambda from?

Sign in to comment.


ishwarya ramesh
ishwarya ramesh on 27 Mar 2018
Undefined function or variable 'drivingScenario'. why do i get this error i just need a clear explanation

  2 Comments

Florian Morsch
Florian Morsch on 27 Mar 2018
Why do you get this error? Because the variable or function 'drivingScenario' is undefined and you try to use it. With the information you gave (none at all) noone will be able to help you. Where do you use the variable/function? Which toolbox do you intend to use? If its only a part of code then you maybe have do declare the missing functions/variables yourself.
Walter Roberson
Walter Roberson on 27 Mar 2018
That function is part of the Automated Driving System Toolbox, which was new as of R2017b. You probably do not have that installed or licensed. If I recall correctly it is not available for Student licences.

Sign in to comment.


Liliana Malik
Liliana Malik on 6 Apr 2018
why do i get Undefined function or variable 'pixelLabelDatastore' and Undefined function or variable 'batchNormalizationLayer'

  5 Comments

Show 2 older comments
Walter Roberson
Walter Roberson on 17 May 2018
No, there is no replacement for pixelLabelDatastore in earlier versions.
Akib Rahman
Akib Rahman on 22 Jun 2018
@Walter, batchNormalizationLayer also need Matlab R2017b?

Sign in to comment.


Alex Alex
Alex Alex on 10 Apr 2018
Undefined function or variable 'shaperead'. On the description page for this function it says "Introduced before R2006a". I use MATLAB R2015b- academic use. Does that mean that the function is not available for student license? How can I perform this kind of check in the future? Many thanks, Alex.

  1 Comment

Florian Morsch
Florian Morsch on 11 Apr 2018
Type "ver" into the Matlab Command Window. shaperead is part of the Mapping Toolbox, if you dont own it you cant use the function. Normaly it should be included in the academic license, so check if you have downloaded it. If not you may try to load it.
If its not for free in your version you may try to contact your IT so it can be included into the license.
Otherwise, if you have newly created the code try to restart matlab once, sometimes that helps, too.
Best regards

Sign in to comment.


tim jelly
tim jelly on 12 Apr 2018
When trying to make a GUI i get the error:
Undefined function or variable 'radioChanged'
Error while evaluating ButtonGroup SelectionChangedFcn.
I dont have "radioChanged" in my code so how do I fix this, thanks

  1 Comment

Walter Roberson
Walter Roberson on 12 Apr 2018
What shows up if you use
radios = findall(0, '-property', 'SelectionChangedFcn');
get(radios, 'SelectionChangedFcn')

Sign in to comment.


Saadia Talay
Saadia Talay on 21 May 2018
Edited: Walter Roberson 8 minutes ago
Undefined function or variable 'lgemri' when I enter the following:
[X,meta]=nrrdread(lgemri);
The nrrdread function has been taken from the matlab file exchange: https://www.mathworks.com/matlabcentral/fileexchange/34653-nrrd-format-file-reader
The lgemri is a file in nrrd format.

  2 Comments

Walter Roberson
Walter Roberson on 21 May 2018
lgemri should be a character vector that contains the name of the file.

Sign in to comment.


Francisco Santamaría
Francisco Santamaría on 23 Jun 2018
Edited: Francisco Santamaría on 23 Jun 2018
for i=1:(npop+1)
dron(i,:)=rand(1,nvar).*(xmax-xmin)+xmin;
cost(i)=CostfunctA3(dron(i,:));
dron_cost(i,:)=[dron(i,:) cost(i)]
end
When trying to make a run i get the following error:
Undefined function or variable 'CostfunctA3'.

  1 Comment

Stephen Cobeldick
Stephen Cobeldick on 23 Jun 2018
@Francisco Santamaría: have you defined/downloaded a function named CostfunctA3? Is it on the MATLAB path?

Sign in to comment.


Waqas Waqas Ul Hussan
Waqas Waqas Ul Hussan on 23 Aug 2018
Edited: Walter Roberson on 24 Aug 2018
hi
I am getting this problem in Matlab when plotting the graphs with shaded area.
Undefined function or variable 'jbfill'.
These below are my code lines. error is in line 127 below.

  7 Comments

Show 4 older comments
RW Student
RW Student on 29 Nov 2018
Hi Arihant, I am currently struggling with the same error using parsim as you described here. Can you please elaborate on how to solve this problem? I am using 2017b as well.
Arihant Sureka
Arihant Sureka on 3 Jan 2019
Hi
Please try out these following steps -
  1. After your parsim commands at the out command line use the following -
out = parsim(in,'TransferBaseWorkspaceVariables',on 'ShowProgress', 'on') as also mentioned on help page.
or
2. Use function callbacks which can be accesed in simulink from File-> Model Properties -> Model Properties -> Callbacks.
Then punch name(s) of your initialization script in the PreLoadFcn and InitFcn without .m at the end of the name.
For example - If your script is call "Init_SIM", then it would just go as Init_SIM in the callbacks and not as Init_SIM.m.
Regards
yousra aichoun
yousra aichoun on 6 May 2020 at 10:10
hi ,
can you help me please i'm having the same problem but with simulink ,once i run the simulation , it display :Undefined function 'modelRegistry' for input arguments of type 'PmSli.RunTimeModule'.

Sign in to comment.


David Akin
David Akin on 1 Nov 2018
Edited: David Akin on 2 Nov 2018
Same error but using a Mathworks example. Here's the contents of fact.m
function f = fact(n)
f = prod(1:n);
end
Located here:
/opt/software/MATLAB/2018a/toolbox/local/fact.m
When trying to use:
>> y=fact(5);
Undefined function or variable 'fact'.
I cd'ed to the directory containing the file before starting MATLAB and it's in the search path:
>> path
MATLABPATH
/opt/software/MATLAB/2018a/toolbox/local
.
.
.
Any suggestions?
>> dos('cat /opt/software/MATLAB/2018a/toolbox/local/fact.m');
function f = fact(n)
f = prod(1:n);
end

  4 Comments

Show 1 older comment
Walter Roberson
Walter Roberson on 2 Nov 2018
Your path is /opt/software/MATLAB/2018a/toolbox/local but the fact.m is stored in /opt/Matlab/2018a/toolbox/local/fact.m which is a different directory
David Akin
David Akin on 2 Nov 2018
I've fixed that. For some reason I've still getting the error.
>> dos('cat /opt/software/MATLAB/2018a/toolbox/local/fact.m');
function f = fact(n)
f = prod(1:n);
end
>> path
MATLABPATH
/opt/software/MATLAB/2018a/toolbox/local
...
>> y=fact(5);
Undefined function or variable 'fact'.
>>
Steven Lord
Steven Lord on 2 Nov 2018
Do not store your own files in a directory under the matlabroot directory. See this documentation page for some of the reasons why. If you must do so, that documentation page will also tell you how you can.
Consider storing your files in your userpath folder instead.

Sign in to comment.


David Akin
David Akin on 1 Nov 2018
It's an example only, as I've got some code from a colleage (a collection of .m files) I'd like to use. However it's not finding the functions. Thank you though.

  0 Comments

Sign in to comment.


michael
michael on 14 Nov 2018
(Matlab R14)
Something strange is that when I try to call some function from toolbox (communication) I'm getting that it is not existing.
Even when I'm going to %MATLABROOT%\toolbox\comm\comm where the m file is existing, I still can't run it.
Please suggest what is the issue

  2 Comments

Walter Roberson
Walter Roberson on 14 Nov 2018
restoredefaultpath
rehash toolboxcache
If that does not work then please show us the complete error message and also the results of using the "which" command with the -all option and the name of the function .
Hector Diaz
Hector Diaz on 27 Mar 2020
Thanks for the advice!!, it works perfectly to solve the problem!!

Sign in to comment.


Darrell
Darrell on 6 Feb 2019
I have seen this issue before with other functions. As stated before, first check that the function name is spelled correctly and that the function is located in the matlab search path. Assuming those two things check, then delete the path where the function is located, then reset the path. I would also will restart Matlab. I'm not sure why, but this seems to correct the problem.

  0 Comments

Sign in to comment.


Al3jandro
Al3jandro on 24 Jun 2019
Hi.
I'm making this rutine, but i cant get values of K, how can I resolve this issue?
clear;
clc;
A=xlsread('ANÁLISIS DE ESTRUCTURAS _ INPUT2','BARRAS','B1:B6');
I=xlsread('ANÁLISIS DE ESTRUCTURAS _ INPUT2','BARRAS','C1:C6');
E=xlsread('ANÁLISIS DE ESTRUCTURAS _ INPUT2','BARRAS','D1:D6');
W=xlsread('ANÁLISIS DE ESTRUCTURAS _ INPUT2','BARRAS','u1:u6');
L=xlsread('ANÁLISIS DE ESTRUCTURAS _ INPUT2','BARRAS','Q1:Q6');
a=xlsread('ANÁLISIS DE ESTRUCTURAS _ INPUT2','BARRAS','R1:R6');
n=xlsread('ANÁLISIS DE ESTRUCTURAS _ INPUT2','BARRAS','V3');
nGDL=xlsread('ANÁLISIS DE ESTRUCTURAS _ INPUT2','NUDOS','J2');
GDLG=xlsread('ANÁLISIS DE ESTRUCTURAS _ INPUT2','BARRAS','K2:P4');
for i=1:n
A=A(i);
I=I(i);
E=E(i);
L=L(i);
a=a(i);
KL(i)=[E*A/L 0 0 -E*A/L 0 0;0 12*E*I/L^3 6*E*I/L^2 0 -12*E*I/L^3 6*E*I/L^2;0 6*E*I/L^2 4*E*I/L 0 -6*E*I/L^2 2*E*I/L;-E*A/L 0 0 E*A/L 0 0;0 -12*E*I/L^3 -6*E*I/L^2 0 12*E*I/L^3 -6*E*I/L^2;0 6*E*I/L^2 2*E*I/L 0 -6*E*I/L^2 4*E*I/L];
T(i)=[cos(a) sin(a) 0 0 0 0;-sin(a) cos(a) 0 0 0 0;0 0 1 0 0 0;0 0 0 cos(a) sin(a) 0;0 0 0 -sin(a) cos(a) 0;0 0 0 0 0 1];
KG(i)=T(i)'*KL(i)*T(i);
G=[GDLG(i,1) GDLG(i,2) GDLG(i,3) GDLG(i,4) GDLG(i,5) GDLG(i,6)];
KT=zeros(nGDL,nGDL);
KT(G,G)=KG(i);
if i==1
K=zeros(nGDL,nGDL);
end
K=K+KT;
end
disp(K)

  3 Comments

Walter Roberson
Walter Roberson on 24 Jun 2019
A=A(i) replaces the array A with a single scalar value. After the statement, A is size 1x1 and it is not possible to access A(2)

Sign in to comment.


clpi
clpi on 3 Jul 2019
Hello !
I have a matlab function which at a certain point calculates sin(2*pi*freq*t_array) (t_array in an array of size (1,2000).
I tried to call this function via matlab.engine but I got the error message: "Undefined function 'sin' for input argument of type 'int64' "
I wanted to add the file 'sin.m' to my working directory but it is not a function script, it is a simple text.
I would be very grateful of any help
Thank you !

  0 Comments

Sign in to comment.


Regina Vivian Barli
Regina Vivian Barli on 8 Jul 2019
Hello, I happen to stumble upon similar problem.
So I have been trying to use matlab for video stabilising, but keep getting this error:
Undefined function or variable 'cvexEstStabilizationTform'.
even though I have followed Matlab's instruction by running a command by clicking
edit cvexEstStabilizationTform.m
Can anyone please suggest me what to do?
Kind regards
Vivian

  0 Comments

Sign in to comment.


Ashwanth Ramesh
Ashwanth Ramesh on 18 Oct 2019
I am trying to upload audio data into matlab using audioDatastore funtion and the same error pops up. Please help!
Screenshot (102).png

Sara Alkhaldi
Sara Alkhaldi on 29 Jan 2020
The functions stepseq, impseq, and nextpow2 do not work in the MATLAB R2018B and I don't know why. Can someone please help?
Screen Shot 2020-01-29 at 4.15.16 PM.png

  1 Comment

Walter Roberson
Walter Roberson on 29 Jan 2020
nextpow2 should be part of MATLAB but the other two are from a book https://www.mathworks.com/matlabcentral/fileexchange/2189-digital-signal-processing-using-matlab

Sign in to comment.


abood qamar
abood qamar on 1 Apr 2020
can please help me to solve this problem

  2 Comments

Image Analyst
Image Analyst on 1 Apr 2020
Why do you think that function SHOULD exist? Do you think it's a built-in toolbox function or did you write it? Is it on the search path? If so, this should show some existing file:
which -all guard_interval
If you still need more help, create a new question rather than continue the discussion here.
Walter Roberson
Walter Roberson on 1 Apr 2020
Is this related to MIMO-OFDM Wireless Communication with Matlab book?

Sign in to comment.


Ayshath Afra
Ayshath Afra on 4 Apr 2020
Undefined function or variable 'readCBIR'.
why does this error comes

  8 Comments

Show 5 older comments
Walter Roberson
Walter Roberson on 4 Apr 2020
I do not appear to have access to that paper "Remote Sensing Image Retrieval Using Convolutional Neural Network Features and Weighted Distance"
readCBIR is not a Mathworks function, and is not present in any toolbox that I can find.
You might perhaps be able to get the code from the authors of the paper.
Ayshath Afra
Ayshath Afra on 5 Apr 2020
function ds = imageDatastore(location, varargin)
can i get this function

Sign in to comment.


apri zulham
apri zulham on 19 Apr 2020 at 23:56
i need help!!
Undefined function or variable 'imaghwinfo'.
Error in CAMERA_MATLAB>pushbutton1_Callback (line 81)
IAHI = imaghwinfo;
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in CAMERA_MATLAB (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)CAMERA_MATLAB('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
81 IAHI = imaghwinfo;

  1 Comment

Walter Roberson
Walter Roberson on 20 Apr 2020 at 0:55
The proper function name is imaghwinfo . You need to change line 81 of CAMERA_MATLAB.m

Sign in to comment.


HS
HS on 20 Apr 2020 at 15:58
Undefined function or variable 'readmatrix'.
I have a basic_matrix.txt file including
6,8,3,1
5,4,7,3
1,6,7,10
4,2,8,2
2,7,5,9
I want to read the contents of this file (basic_matrix.txt). When I write
M = readmatrix('basic_matrix.txt')
MATLAB gives an error as
Undefined function or variable 'readmatrix'.
M = readmatrix('basic_matrix.txt')
Does anyone know what the reason is?
I am just trying to implement what is written on https://www.mathworks.com/help/matlab/ref/readmatrix.html in order to read the contents of a file. I am using MATLAB R2018b.
Any help would be appreciated.

  2 Comments

Walter Roberson
Walter Roberson on 20 Apr 2020 at 17:22
needs r2019a.
For your release use readtable with readvariablenames false and then table2array
Walter Roberson
Walter Roberson on 20 Apr 2020 at 17:23
Or really for that file you could just load() the file.

Sign in to comment.


Alex Backer
Alex Backer on 24 Apr 2020 at 4:17
This happened to me with mean and median when I indvertently called it mean(variable,:) instead of mean(variable,1).

  0 Comments

Sign in to comment.


José Moctezuma Rodríguez Santillán
José Moctezuma Rodríguez Santillán on 9 May 2020 at 19:17
Edited: Walter Roberson on 9 May 2020 at 22:49
Undefined function or variable 'isfile'. You cannot find the isfile function in MATLAB R2015. any alternative to replace? this is my code;
options = weboptions('Username', 'insertusername', 'Password', 'insertpassword');
year = 2016;
month = 03;
time = 0900;
start_jd = 011;
end_jd = 045;
for jd = start_jd:end_jd
cd = day(datetime((year-1),12,31) + days(jd));
filename = ['SST' num2str(year) '_' num2str(jd) '.nc'];
if isfile(filename)
fprintf('already have the file |%s|\n',filename);
else
url=['https://data.nodc.noaa.gov/ghrsst/L4/GLOB/JPL_OUROCEAN/G1SST/2016/' num2str(year) '/' num2str(jd)];
outname=websave(filename,url,options);
fprintf('got weather data file |%s|\n',outname);
end
end

  1 Comment

Walter Roberson
Walter Roberson on 9 May 2020 at 22:49
Change
if isfile(filename)
to
if exist(filename, 'file')

Sign in to comment.


Yinying Wang
Yinying Wang 15 minutes ago
Help!
I received "undefined function 'string2char' for 'char' type input arguments".
This error occurs only when I use mphload('filename') in an exe file. When in a .m file this line works well. I thought maybe mphload use 'string2char' function whatever its input argument type is. I use mphload("filename") instead. It still doesn't work...

  0 Comments

Sign in to comment.

Sign in to answer this question.