how to combine symbolics and if statement?
    조회 수: 11 (최근 30일)
  
       이전 댓글 표시
    
Hello, My function is like this
 y=x+2 for 0<=x<=10 
 y = x^2 for 10<x<=500 and x belongs to 0,500.
so I tried like this
syms x
if x>=0 && x<=10
    y=x+2
else y=x^2
end
but i am getting an error saying
"Conversion to logical from sym is not possible" 
"Operands to the || and && operators must be convertible to logical scalar values".
Please help me how to overcome this.
댓글 수: 0
채택된 답변
  Walter Roberson
      
      
 2016년 10월 15일
        You cannot use if together with symbolic expressions.
You should be considering using numeric expressions together with logical indexing. See though http://www.mathworks.com/matlabcentral/answers/301165-ode-suite-for-solving-switched-systems#comment_397941 for a discussion on hidden problems with one way of coding that.
You could also code the obscure
evalin(symengine, 'piecewise([0 <= x and x <= 10, x+2], [10 < x and x <= 500, x^2])')
but you will find that it probably will not be of any use to you.
추가 답변 (1개)
  Karan Gill
    
 2016년 10월 20일
        
      편집: Karan Gill
    
 2017년 10월 17일
  
      In this case:
syms y(x)
y(x) = piecewise(0<=x<=10, x+2, 10<x<=500, x^2);
Now try
y(1)
ans =
  3
>> y(12)
ans =
  144
참고 항목
카테고리
				Help Center 및 File Exchange에서 Assumptions에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


