Matrix column updation via optimization

6 views (last 30 days)
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 Comments
Torsten
Torsten on 2 Nov 2022
Edited: Torsten on 2 Nov 2022
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.

Sign in to comment.

Accepted Answer

Bruno Luong
Bruno Luong on 2 Nov 2022
Edited: Bruno Luong on 2 Nov 2022
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 Comments
Veena Narayanan
Veena Narayanan on 3 Nov 2022
@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 on 3 Nov 2022
Edited: Bruno Luong on 3 Nov 2022
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.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!