I am writing code for a function but I get an error message

I have to write a function (g) that satisfies several conditions.
I have tried to do this before, but never successfully.
This is what I have so far:
function mayday=g(x)
if x<-pi
mayday=-1;
elseif (x>=-pi)&&(x<=pi)
mayday=cos(x);
else mayday=sin(x)+cos(x);
end
When I call the function with individual x's, it works fine, but when define x as a vector
g(-2*pi:pi/4:2*pi)
I get the error message
Operands to the || and && operators must be convertible to logical scalar values.
Error in g (line 7)
elseif (x>=-pi)&&(x<=pi)
What am i doing wrong?
thanks for the help

 Accepted Answer

Just replace && with & and double pipes | | with | to operate on nonscalars.

2 Comments

That will eliminate the error message, but it will not eliminate the problem of trying to apply an "if" statement to a vector expression.
An if statement can be applied to a vector expression. It is handled by matlab as
if(vector) = if(all(vector))
which may be the desired behavior.. probably not, but that's a different question.

Sign in to comment.

More Answers (2)

Categories

Find more on Parallel Computing 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!