Error in function at if-elseif

1 view (last 30 days)
Raul Vaida
Raul Vaida on 10 Mar 2018
Commented: Raul Vaida on 10 Mar 2018
I've got the error Output argument "val" (and maybe others) not assigned during call to "yt". yt(x) funtion:
function [val] = yt(x)
if ((-9<=x) & (x<-3)) | ((3<=x) & (x<=9))
val = sin(5*x);
elseif (-3<=x) & (x<3)
val = cos(x) - cos(3) - sin(15);
end
and i call the function using the following
x = -9:9;
val = yt(x)
I've got no output from this.
  1 Comment
per isakson
per isakson on 10 Mar 2018
Edited: per isakson on 10 Mar 2018

Sign in to comment.

Accepted Answer

Ahmet Cecen
Ahmet Cecen on 10 Mar 2018
Edited: Ahmet Cecen on 10 Mar 2018
x is a vector at this point so your comparisons are not resolving to a single true false. I am guessing this is what you meant to do:
x = -9:9;
val = yt(x)
function [val] = yt(x)
for i = 1:length(x)
if ((-9<=x(i)) && (x(i)<-3)) || ((3<=x(i)) && (x(i)<=9))
val(i) = sin(5*x(i));
elseif (-3<=x(i)) && (x(i)<3)
val(i) = cos(x(i)) - cos(3) - sin(15);
end
end
end
There are better ways to do this of course, but this is probably the easiest to relate.
  1 Comment
Raul Vaida
Raul Vaida on 10 Mar 2018
Thank you very much, it worked perfectly this way!

Sign in to comment.

More Answers (0)

Categories

Find more on Nonlinear Dynamics in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!