How can i use elements with equal indexes?
    3 次查看(过去 30 天)
  
       显示 更早的评论
    
Hello everyone, I am working on an constraint where i will only use the elements of an matrix if their indexes are equal like; 
for i=1:36
    for j=1:36 
        if  i=j
            M*x(i,j)-y(j)>=0
        else 
        end 
    end 
end
my matrix has 36x36 dimensions so need to go from 1 to 36. 
this is what i did for y ; 
y(:,1)
y is 36x1 so this works for y. 
i i can not use any loops or conditions i am trying to write this only in one line! if there is a little tip like 
x(do something here);  
that is what i need. 
Hope i can make what i need clear. 
Thank you in advance! 
0 个评论
采纳的回答
更多回答(1 个)
  Torsten
      
      
 2022-4-10
        
      编辑:Torsten
      
      
 2022-4-10
  
      Put "-M" in the matrix of inequality constraints where x_jj is addressed and "+1" where y(j) is addressed.
Then you have set the constraint
-M*x_jj + y_j <= 0
or
M*x_jj - y_j >= 0
This will result in 36 new rows in the constraint matrix A and 36 new zeros in the vector b of the right-hand side.
3 个评论
  Torsten
      
      
 2022-4-10
				And
for i=1:36
    constr(i) = M*x(i,i)-y(i) >= 0
end
does not work ?
  Steven Lord
    
      
 2022-4-10
				So you only want to operate on diagonal elements of x?
x = magic(4)
y = [1; 2; 3; 4]
result = 2*diag(x) - y
n = 3;
spotcheck = [2*x(n, n)-y(n), result(n)] % These should match 
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Quadratic Programming and Cone Programming 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




