Method Input within Function (or something like that)

1 view (last 30 days)
function [Matrix,SubcomponentMatrix] = myfunction(other things + SubcomponentMatrix)
for i=1:length(something)
element = Nodes(List{i,2}).(List{i,3})...
(List{i,6});
element = update(element,SubcomponentMatrix,i);
end
where element is a class instance
and update is a method
function obj = update(obj,SubcomponentMatrix,i)
for m=3:sum(~cellfun(@isempty,SubcomponentMatrix(i,:)),2) %length var therefore only consider non empty cells
x = SubcomponentMatrix{i,m}.property1;
y(m-2,1) = SubcomponentMatrix{i,m}.y(x+1);
end
obj.K = 1-min(y);
end
SubcomponentMatrix is a cell that contains classes of a different type
The first two colums of SubcomponentMatrix contain some sort of ID and don't contain relevant information
I'm pretty sure I didn't catch something basic on OOP - the error is "not enough Input arguments" in update
I'm very grateful for any help.
  4 Comments
Guillaume
Guillaume on 28 Oct 2019
Ok, so the problem is with myfunction, not with update. What is the actual signature of myfunction, and more importantly, how did you call it?
Have you really given us the full text of the error message? The answer to these questions would have been in the rest of the error message.
Lucas Russi
Lucas Russi on 28 Oct 2019
Edited: Guillaume on 28 Oct 2019
Error in myfunction (line 19)
element = update(element,SubcomponentMatrix,i);
Error in Process (line 51)
[A] = myfunction(System_Matrix, Nodes,...
Error in Main (line 101)
Process
Error Run (line 162)
Main
no sorry, thats everything

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 28 Oct 2019
What this error is telling you:
Not enough input arguments.
Error in myfunction (line 19)
element = update(element,SubcomponentMatrix,i);
is that when the code reaches line 19 of myfunction you try to use one of the input arguments of myfunction but that input argument wasn't specified when you called myfunction. That not enough input arguments refers to myfunction, not to update. The reason it occurs on line 19 is because that's the first line where you try to use that missing input.
Since both element and i are created inside the function, it must be SubcomponentMatrix that's missing. Unfortunately, the full call of myfunction (what a bad name!) is hidden in the ... you've used to replace the rest of the error but clearly at line 51 of process, you're not passing enough input arguments to myfunction. If you don't pass the SubcomponentMatrix input, then yes, you can't use it.

More Answers (3)

Lucas Russi
Lucas Russi on 28 Oct 2019
prob.PNG

Lucas Russi
Lucas Russi on 28 Oct 2019
thanks for taking time to solve my problem - but I do pass the SubcomponentMatrix.
that shouldnt be the issue.
Is there any other immaginable reason why this doesnt work?

Lucas Russi
Lucas Russi on 28 Oct 2019
nope all good -
I defined 12 inputs in process and 13 in my function - which inst actually called my function

Tags

Community Treasure Hunt

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

Start Hunting!