Undefined function or variable . which is defined in another workspace.

Hello,
I have an problem and I made one code to solve that but I got an error.
Actually I have an function which I want to run in loop so I made function file and then make anouther programme to call that function but "for" loop variable is making error.
My code is somewhat complecated so I write here replica of that for example by which you all can have idea.
My function file code is:
function y=mytest(x)
y(t)=x(t)+1;
y=y(t);
end
and my programme file code is :
b=1:10;
myfun=@mytest;
for t=1:1:max(b)
a(t)=myfun(b(t));
end
I am getting thi error:
Undefined function or variable 't'.
Error in mytest (line 2)
y(t)=x(t)+1;
Error in myrun (line 4)
a(t)=myfun(x(t));
Please help me or suggest me what to do.
Thank you.

 Réponse acceptée

b=1:10;
for t=1:1:max(b)
myfun = @(x) mytest(x,t); %<--- parameterized
a(t)=myfun(b(t));
end
function y=mytest(x,t) %<--- now receives t as well
y(t)=x(t)+1;
y=y(t);
end
This will fail, of course. You are passing the scalar b(t) into mytest, but you are expecting to be able to index it at t.

1 commentaire

Thank you.
your given syntax "myfun = @(x) mytest(x,t);" helped me to solve problem.

Connectez-vous pour commenter.

Plus de réponses (1)

Ruger28
Ruger28 le 16 Fév 2021
Modifié(e) : Ruger28 le 16 Fév 2021
You pass in a value that the function sees as x, but you are trying to use t. You need to pass your b(t) value AND your t value if you need them, but it looks like you just want to add one to your value.
b=1:10;
myfun=@mytest;
for t=1:1:max(b)
a(t)=myfun(b(t));
end
function y=mytest(x)
y=x+1;
% y(t)=x(t)+1;
% y=y(t);
end

2 commentaires

Thank you for answering.
This is example of my code not actual one. my code is complecated so I simply write
y(t)=x(t)+1;
but actully that is not my real objective.
let me create one more exaple.
if my function is :
function y=mytest(x)
y(t)=x(t)+x(t-1)+1;
y=y(t);
end
what now?
I need value of 't'.
Motive of my question is I need that value of 't' in fuction file automatically call value from
for t=1:1:max(b)
If you want then I can give you my whole file but that may be take time to understand my perpose.

Connectez-vous pour commenter.

Produits

Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by