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 Center および File ExchangeLinear Least Squares についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by