How to build a matrix with "sum" function in its elements?
조회 수: 2 (최근 30일)
이전 댓글 표시
Hello everyone, I am building an mpc controller in matlab rather than using the built in 'mpc command'. I am facing some difficulties in building the mpc's matrices I thought about using for loop.my question is how to use for loop to generate these matrices? ...thanks in advance
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/283206/image.png)
댓글 수: 2
Walter Roberson
2020년 4월 9일
Is it imposed on you that you must use a for loop, rather than a vectorized solution like I show?
채택된 답변
Walter Roberson
2020년 4월 10일
편집: Walter Roberson
2020년 4월 10일
Outline, not checked in detail against Su,b matrix requirements
CAn = Cb;
TCAn = 0;
TCAB = 0;
for K = 1 : p
%Sub
CAB = CAn * Bu;
TCAB = TCAB + CAB;
%now store TCAB into appropriate locations in Sub
insert storage code here
%Sxb
CAn = CAn * A;
TCAn = TCan + CAn;
%now store TCAN into appropriate locations in Sxb
end
댓글 수: 0
추가 답변 (1개)
Walter Roberson
2020년 4월 9일
sxb = C(b) .* cumsum(A.^(1:p)) .';
You might then want to
Sub = flipud(hankel(flipud(sxb)))
댓글 수: 3
Walter Roberson
2020년 4월 9일
If Cb is a matrix, then Sx,b would not be p x 1 as required by the diagram -- not even if A is also a matrix.
If A is a matrix, then for A^2 to exist then A would have to be a square matrix, same number of rows and columns. Call that m x m . Then if Cb is q x r, in order for Cb * A^2 to be scalar, either Cb and A are scalar, or else r = m and q x m * m x m -> q x m would have to be scalar, which could only happen if q = m = 1 so both scalar.
The logic is a bit different if A^n is intended ot indicate A.^n (each element individually raised to the power.) In such a case, if A is m x n then A.^2 would be m x n, and Cb * A^2 could be scalar if Cb is 1 x m and A is m x 1. Is that what is happening?
참고 항목
카테고리
Help Center 및 File Exchange에서 Model Predictive Control Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!