How can I use the symbolic expression with a logical OR operator...(both being parts of the condition for a while loop)
조회 수: 1 (최근 30일)
이전 댓글 표시
I am trying to create a while loop as follows:
while (abs(C(X,U)-gamma)>=eps1)||(abs(Lbar_u(X,U)))
if abs(Lbar_u(X,U))>=eps2
k=k+1;
U=U-K*Lbar_u(X,U);
if abs(C(X,U)-gamma)>=eps1
X=X-inv(Cx(X,U))*(C(X,U)-gamma)
end
end
elseif abs(C(X,U)-gamma)>=eps1
X=X-inv(Cx(X,U))*(C(X,U)-gamma)
end
end
THE ERROR MESSAGE WHICH I GET IS AS FOLLOWS:
"Conversion to logical from sym is not possible"
what can I do??
댓글 수: 11
Walter Roberson
2013년 3월 26일
There are circumstances under which it makes sense to use logical operators with symbolic expressions, but a "while" condition is not suitable.
In some cases what would be suitable would be constructing a piecewise expression. I do not think your while loop is suitable for that, though.
If you had actual values to work with for X and U and eps1 and eps2, then you could use subs() to create symbolic numeric values that could be compared, something like
double(subs(abs(C(X,U)-gamma))) > double(eps1)
though usually there are more efficient ways to code, such as using matlabFunction()
답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Assumptions에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!