How to simplify this function?
    조회 수: 9 (최근 30일)
  
       이전 댓글 표시
    
Hi,
I want to create u as a function of two variables x1 and x2 with the conditions as follows: if true
    U = G(a.s1+(1-a).s2);
    % Here
    % G is a constant
    % a is a constant
    % s1 and s2 are functions of x1 and x2 and are described below
end
if true
    % s1 as func. of x1,x2
    if x1(x1-x2) >= 0
       s1 = x1;
    else
       s1 = 0;
    % s2 as func. of x1, x2
    if -x2(x1-x2) >= 0
       s2 = x2;
    else
       s2 =0;
    end
end
and use it to define the parameter U as
if true
    U = G(a*x1*modsign(x1(x1-x2),0) + (1-a)*x2*modsign(-x2(x1-x2),0));
end
Please suggest a better and simpler way to do it. Preferably I want U, s1 and s2 as functions of x1 and x2 without using this convoluted way that I have used.
Thanks.
Shilp
댓글 수: 2
  Walter Roberson
      
      
 2013년 1월 18일
				Are you sure that you want to index x1 by the difference between x1 and x2?
x1(x1-x2)
is an indexing operation.
Perhaps you want multiplication in there?
x1 * (x1-x2)
??
답변 (2개)
  Thorsten
      
      
 2013년 1월 18일
        
      편집: Thorsten
      
      
 2013년 1월 18일
  
      Note that x times y is coded x*y in Matlab.
I would go straigthforward
function U = myfunction(x1, x2)
G = 1.0; % replace with your constants 
a = 0.5;
if x1*(x1 - x2) >= 0
  s1 = x1;
else
  s1 = 0;
end
if -x2*(x1 - x2) >= 0
  s2 = x2;
else
  s2 =0;
end
U = G*(a*s1 + (1-a)*s2);
  Thorsten
      
      
 2013년 1월 18일
        Hi Shilp, please try to ask a more detailed, more Matlab specific question, may be then I could provide some help.
참고 항목
카테고리
				Help Center 및 File Exchange에서 Matrix Computations에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


