How can i use elements with equal indexes?
1 次查看(过去 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 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!