Unrecognized function or variable 'size'. in function called from script

22 views (last 30 days)
The Problem:
I have a script, where I call two self-written functions. One of the functions is called weightingFkt2(). In this function I call the find() function of Matlab, which returns indexes. Now, if I want to call indexsize=size(index,2) I get an error "Unrecognized function or variable 'size'." while running the code.
What I have already done (besides researching):
I checked in the weightedFkt(), if it is a matrix. It is.
If I write the same line (indexsize=size(index,2);) in the command window after getting the error (I told matlab to pause on errors) it works fine.
I got the same error on different variables in the same function before. There I was able to put the call of size() into the script, where it worked fine.
I use Matlab R2019b.
The relevant lines of code in the functioin I attach, the line where I get the error is line 43, the lines where I got errors, but was able to put the line in the script are 5,6 and 17.
In the script the relevant lines of codes are:
origsize1=size(origimage,1);
origsize2=size(origimage,2);
newsize1=round(origsize1*1.25);
newsize2=round(origsize2*1.25);
for x=1:newsize1
for y=1:newsize2
%findnearestindeces: finds the nearest points in valuepixels
%of x and y
nearestindex=findnearestindeces(x,y,valuepixels(:,:,:)); %valuepixels: valuepixels(s,t,:)=[currentPoint(1), currentPoint(2), neworigimage(s,t)];
size3=size(nearestindex,1); %due to error message in weightingFkt() now in script
cp=[x y];
imagevalue=weightingFkt2(nearestindex, cp, valuepixels, size3);
finalimage(x,y)=imagevalue;
end
end
So my question is, how I can solve that.
As that is my first question in this forum I tried to follow all the guidelines and add all the relevant code but please let me know, if something is missing.
  2 Comments
Walter Roberson
Walter Roberson on 18 Aug 2021
I wonder if the error is against nearestindex instead of against size? If length1 < 1 then you never assign to nearestindex
Katharina Heitger
Katharina Heitger on 18 Aug 2021
Thank you for your answer.
length1 is 4, since nearestindex is of 4x2 double.
I already asked myself a similar question, not that nearestindex is not assigned, but I checked and looked. All of the 8 values (4x2) are double and it is a matrix. In fact they have values like ([412 1]; [1 1]; [514 1]; [413 1]).
And the find() function returns a value, in this case a 1x1 double, but nevertheless.
And everytime I get this error, and I run the size() command int the command window I works out fine.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 19 Aug 2021
Near the bottom of the script you have
size=size(nearestindex);
Because you assign to the variable size, MATLAB assumes that size must be a variable everywhere in the script.
Do not use the same name as both a function and a variable: MATLAB is permitted to make these kinds of assumptions now.
  1 Comment
Katharina Heitger
Katharina Heitger on 19 Aug 2021
Thank you! Now I'm really embarassed... I double or triple checked the code, with my eyes and with who. But that I overlooked. Thank you again!

Sign in to comment.

More Answers (1)

Chunru
Chunru on 18 Aug 2021
Edited: Chunru on 18 Aug 2021
Most likely, somewhere in your code you use "size" as a varibale name. Try "debstop error"; When error occurs, use "whos" to see if "size" is in the variable list.
  8 Comments
Katharina Heitger
Katharina Heitger on 19 Aug 2021
You said, I should copy the function name to the command window. Do you mean the name of my self-written fucntion or the size()-function? The size()-function works via the command window fine.
Output of the which command, so the path of the function is:
built-in (C:\Program Files\MATLAB\R2019b\toolbox\matlab\elmat\@double\size) % double method
In my opinion this looks fine, but maybe it isn't?
Katharina Heitger
Katharina Heitger on 19 Aug 2021
So I copied the name of the self-written function into the command window and had a breakpoint right before the error occurs. Here I entered 'size'+0 into the command window, where the ouput was:
ans =
115 105 122 101
And the the error occured. But I don't think, that this was what you meant.

Sign in to comment.

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!