필터 지우기
필터 지우기

Using If for syms

조회 수: 1 (최근 30일)
Hossein Alishahi
Hossein Alishahi 2021년 3월 6일
댓글: Hossein Alishahi 2021년 3월 6일
Hi,
I hope you are keeping safe.
I have a urgent question in matlab. Could you please give me sime advice in this regard. I wrote following code where
"function F = fun(x,y,alpha1,alpha2,beta1,beta2,lambda)
F= log((1+alpha1*x./(1+alpha2*y))) -lambda*log((1+beta1*x./(1+beta2*y)));
end"
Main Code
Z=fun(x,P-x,alpha1,alpha2,beta1,beta2,lambda);
z=solve(Z==0);
for i=1:length(z)
z(i,1)=piecewise(z(i,1)<=0,0)
y(i)=P-z(i,1)
S(i)=fun(z(i,1),y(i),alpha1,alpha2,beta1,beta2,lambda)
end
I want to z(i,1)=0 if z(i,1)<=0 or complex and if z(i,1)>0, claculate S(i) but there is a problem with piecewise() which cannot be solved for me.
Could you please help me to write it. P, alpha1, alpha2, beta1, beta2, and lambda are desired positive valuse.
Many Thanks in advance.

답변 (1개)

Walter Roberson
Walter Roberson 2021년 3월 6일
subs(piecewise(x<3,0),x,5)
ans = NaN
That is, if no condition is matched by the piecewise then the output is undefined, NaN. Not 0 or empty.
piecewise(imag(z(i))~=0 || z(i)<0, 0, S(i))
  댓글 수: 6
Walter Roberson
Walter Roberson 2021년 3월 6일
I will need the values for the constants to test with
Hossein Alishahi
Hossein Alishahi 2021년 3월 6일
Thank you for your consideration.
I give you two case which meet all states
1.P=3, alpha1=1, alpha2=0.2, beta1=1, beta2=2, and lambda=2.
2.P=3, alpha1=1, alpha2=2, beta1=3, beta2=4, and lambda=5
Thanks in advance

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

카테고리

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

Community Treasure Hunt

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

Start Hunting!

Translated by