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

조회 수: 1 (최근 30일)
Adrian
Adrian 2012년 5월 4일
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

채택된 답변

Kye Taylor
Kye Taylor 2012년 5월 4일
Just replace && with & and double pipes | | with | to operate on nonscalars.
  댓글 수: 2
Walter Roberson
Walter Roberson 2012년 5월 4일
That will eliminate the error message, but it will not eliminate the problem of trying to apply an "if" statement to a vector expression.
Kye Taylor
Kye Taylor 2012년 5월 4일
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.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Walter Roberson
Walter Roberson 2012년 5월 4일
Please read about logical indexing.

Peyman
Peyman 2012년 8월 9일
NOT RELATED TO THE QUESTION: how did you right your question so clear! I used this help and it doesn't work for me!

카테고리

Help CenterFile Exchange에서 Parallel Computing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by