Borrar filtros
Borrar filtros

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

16 visualizaciones (últimos 30 días)
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 comentarios
Walter Roberson
Walter Roberson el 18 de Ag. de 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 el 18 de Ag. de 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.

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 19 de Ag. de 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 comentario
Katharina Heitger
Katharina Heitger el 19 de Ag. de 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!

Iniciar sesión para comentar.

Más respuestas (1)

Chunru
Chunru el 18 de Ag. de 2021
Editada: Chunru el 18 de Ag. de 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 comentarios
Katharina Heitger
Katharina Heitger el 19 de Ag. de 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 el 19 de Ag. de 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.

Iniciar sesión para comentar.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by