How to tune matrices to specific output?
이전 댓글 표시
Hey guys. So I have four matrices that are each 8 by 8: matrix P, matrix Q, matrix R, and matrix G. I have a certain algorithm (I wont go in to too much details about it because its too complicated with multiple files) that depends on those four matrices and uses them to output a single column of values for me. I also have what I call the perfect output, which is what I desire the output single column to look like. Now my question is: How can I use MATLAB to tune those 4 matrices in order for the output column to match the perfect output column?
댓글 수: 8
Dyuman Joshi
2023년 9월 26일
편집: Dyuman Joshi
2023년 9월 26일
It is difficult to comment without any specific information.
"I also have what I call the perfect output, which is what I desire the output single column to look like."
What exactly is your "perfect output"? or what are its characteristics?
Maybe try reshape
Ali Almakhmari
2023년 9월 26일
편집: Ali Almakhmari
2023년 9월 26일
How can I use MATLAB to tune those 4 matrices in order for the output column to match the perfect output column?
And what are the "free tuning parameters" ? All 4*8*8 matrix entries of the 4 matrices ? Or only some of them and the others are derived from these "free" parameters ?
Ali Almakhmari
2023년 9월 26일
What is the length of the so-called "Perfect Output" column vector?
numParams = 4*8^2
If you can mathematically map the 256 free parameters to each element in the Output column vector without any constraint, then solving the problem should be relatively straightforward, isn't it?
Bruno Luong
2023년 9월 26일
As I said use lsqnonlin
% Initialize P, Q, R, G
x0 = cat(3, P, Q, R, G);
lsqnonlin(@(x) computeOutput(x(:,:,1), x(:,:,2), x(:,:,3), x(:,:,4))-perfectoutput, x0);
function output = computeOutput(P, Q, R, G)
% Out your complicated here.
end
Ali Almakhmari
2023년 9월 26일
The code is looking good. 👍
% Initialize P, Q, R, G
P = [0.5 2.5; 3.5 1.5];
Q = P;
R = Q;
G = R;
perfectoutput = [1; 81; 256; 16];
x0 = cat(3, P, Q, R, G);
lsqnonlin(@(x) computeOutput(x(:,:,1), x(:,:,2), x(:,:,3), x(:,:,4)) - perfectoutput, x0)
function output = computeOutput(P, Q, R, G)
M = P.*Q.*R.*G;
output = [M(1); M(2); M(3); M(4)];
end
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Solver Outputs and Iterative Display에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!