Solving Optimisation Problem with Rank Constraint in MATLAB

3 ビュー (過去 30 日間)
rihab
rihab 2015 年 11 月 20 日
コメント済み: Torsten 2015 年 11 月 23 日
I have a typical least squares problem, i.e I have to find the value of x that minimizes norm of C∗x(:)−d. C is 180x16 matrix(C is rank deficient,i.e rank(C)=7), x is 4x4 matrix & d is 180x1 vector. However, I have a constraint that rank(x)=1. If x was a 16x1 vector and didn't have rank constraint, this problem could be easily solved by using y = pinv(C)*d in MATLAB. But since x is a matrix and has rank constraint, I am not able to proceed further. I would be grateful if someone provides me hint or suggestion to tackle this problem.

採用された回答

Torsten
Torsten 2015 年 11 月 20 日
1. Solve y=pinv(C)*d
2. Determine the best rank-1 - approximation x to y as discussed in the previous thread:
My guess is that x solves your original problem, but I'm not 100% certain.
Best wishes
Torsten.
  10 件のコメント
rihab
rihab 2015 年 11 月 20 日
thank you so much :)
Torsten
Torsten 2015 年 11 月 23 日
In the last line of the code, you will have to replace
fun = abs(residuals)
by
fun = residuals'*residuals
or
fun = norm(residuals)
Best wishes
Torsten.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSparse Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by