Matrix column updation via optimization

조회 수: 9 (최근 30일)
Veena Narayanan
Veena Narayanan 2022년 10월 27일
편집: Bruno Luong 2022년 11월 3일
I have an initial matrix B of size (n x n). I have to update each columns of the matrix except the first column such that the updated matrix is orthogonal (BB^T =I) and it also satisfies the constraint (say Bx=c). Is there any existing optimization algorithm to solve it?
  댓글 수: 13
Torsten
Torsten 2022년 11월 2일
편집: Torsten 2022년 11월 2일
I know this, but your MATLAB code calling "fmincon" does not fix the first column. So I thought you relaxed the condition on B.
But see Bruno Luong's code below which seems to solve your problem.
Veena Narayanan
Veena Narayanan 2022년 11월 2일
편집: Veena Narayanan 2022년 11월 2일
@Torsten Thanks a lot.

댓글을 달려면 로그인하십시오.

채택된 답변

Bruno Luong
Bruno Luong 2022년 11월 2일
편집: Bruno Luong 2022년 11월 2일
Using Housholder transformation, B is uniquely determined only for n=3.
I claim that my code solve the problem of
argmin(norm(B*x-c))
under constraints
B(;,1) = B1, and
B'*B = I
where B1, x, c are known.
PS: I assumeall variables are reals. For complex some transpose operations would be modified.
% Generate some fake data
n = 3;
[B,~] = qr(randn(n))
B = 3×3
-0.3607 -0.8710 -0.3336 0.4030 0.1770 -0.8979 0.8411 -0.4583 0.2872
x = randn(n,1);
c = B*x;
B1 = B(:,1);
clear B
% Try to recover B(:,2:end) (with sign of columns that is random) from B(:,1), x, and c
N = null(B1');
cp = c-B1*x(1);
xp = x(2:n);
cp = (cp'*N)';
vp = (cp-xp); % EDIT sign corrected
vp = vp/norm(vp);
P = eye(n-1)-2*vp*vp';
H = N*P;
B = [B1, H]
B = 3×3
-0.3607 -0.8710 -0.3336 0.4030 0.1770 -0.8979 0.8411 -0.4583 0.2872
  댓글 수: 11
Veena Narayanan
Veena Narayanan 2022년 11월 3일
@Bruno Luong Sir, in the code above, can you clarify why we consider the Householder matrix P associated with vp? Is it to obtain a set of orthogonal vectors?
Bruno Luong
Bruno Luong 2022년 11월 3일
편집: Bruno Luong 2022년 11월 3일
The purpose of P (Householder reflection) is to map the projection of x (xp) to the projection of c. The projection is on the subspace orthogonal to span<B1> whith is span(N). The Housholder are reflected vectors mirror to span(vp); computed so that xp is mapped to cp. P is orthognal so N*P.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Linear Least Squares에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by