Matrix from measured data is singular, what could be the reason?

1 回表示 (過去 30 日間)
Anna B.
Anna B. 2022 年 4 月 28 日
コメント済み: Walter Roberson 2022 年 4 月 29 日
Unfortunatelly I don't get a solution for the LSE function:
C=(A'*A)\(A'*B)
with A=[i x 5], B=[i x1]
The matrix A'*A is singular. The matrixes A and B contain functions with measured data. The measured data has been cleaned and filtered before beeing utilized.
Does anybody know, what could be the reason? Maybe because oversampling?
rank(A'*A)=4
A'*A = 5×5
8.5012e+04 -4.9210e+03 1.4934e+01 -1.1823e+03 2.3363e+01
-4.9210e+03 7.2070e+02 -1.3927e+00 1.1026e+02 -1.0357e+00
1.4934e+01 -1.3927e+00 1.3082e-02 -1.0357e+00 5.2241e-01
-1.1823e+03 1.1026e+02 -1.0357e+00 8.2000e+01 -4.1359e+01
2.3363e+01 -1.0357e+00 5.2241e-01 -4.1359e+01 4.1082e+01
  4 件のコメント
Torsten
Torsten 2022 年 4 月 28 日
Maybe your coefficients in the function to be fitted are not independent ?
Anna B.
Anna B. 2022 年 4 月 28 日
編集済み: Anna B. 2022 年 4 月 28 日
this LSE method and the equations should be right- they are the same as in the literature. The only difference are the measured variables (U,j) in the functions. The matrix A consists of:
A=[ dU1/dj1 k1/j1 k2 -1 j1
dU2/dj2 k1/j2 k2 -1 j2
.....
dUi/dji k1/ji k2 -1 ji ]
I have allready tried out a different numerical method mapping the slope dU/dj to the midpoint, using xp=x(1:end-1)+diff(x)./2 but it doesnt help.

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

回答 (3 件)

Bruno Luong
Bruno Luong 2022 年 4 月 28 日
Could you try the normalization similar to my answer here?
  17 件のコメント
Anna B.
Anna B. 2022 年 4 月 28 日
This source is trustworth, but I will check the equations again. Hopefully this is the reason.
Thank you very much!
Torsten
Torsten 2022 年 4 月 28 日
Yes, we don't doubt that the source is trustworthy because we doubt that it's a misspelling.

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


Walter Roberson
Walter Roberson 2022 年 4 月 28 日
syms dj1 dj2 dji dU1 dU2 dUi j1 j2 ji k1 k2
A=[ dU1/dj1 k1/j1 k2 -1 j1
dU2/dj2 k1/j2 k2 -1 j2
dUi/dji k1/ji k2 -1 ji ]
A = 
t = A'*A
t = 
size(t)
ans = 1×2
5 5
rank(t)
ans = 3
A'*A is a linear combination of A with something (that happens to be A' ) . Linear combinations of a matrix cannot increase the rank, so A'*A cannot have higher rank than A has -- which is 3 because A has only 3 rows.
  2 件のコメント
Bruno Luong
Bruno Luong 2022 年 4 月 28 日
I guess she wants to write
dU1dj1
dU2dj2
...
dUidji
...
Not literally 3 rows.
Anna B.
Anna B. 2022 年 4 月 28 日
my fault, sorry... the matrix has i rows.

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


John D'Errico
John D'Errico 2022 年 4 月 28 日
編集済み: John D'Errico 2022 年 4 月 28 日
In no place in this thread have I seen the matrix A. I've seen various versions of it however, with various numbers of rows. I've seen you compute the product A'*A, and give the result of that. But I would strongly conjecture that A has only 4 rows and 5 columns, because in different places, you seem to show matrices with a different number of rows. And you don't seem to think the number of rows is pertinent.
In fact, the size of the matrix A itself is HUGELY pertinent. Why?
When you form the product of two matrices, the rank of the product can never be larger then the rank of either of the components in the product. It will be the same rank as the smaller of the two ranks. In your case, you tell us that A'*A has rank 4, and you show a matrix that is 5x5.
This tends to suggest that A itself has rank 4. And most likely, that suggests that A itself was only a 4x5 matrix, so it had only 4 rows. The rank of a 4x5 matrix will never be larger than 4. it could sometimes be less than 4. But NEVER larger. In that case, A'*A will ALWAYS be a singular matrix. It can never have a rank higher than 4.
I won't even get into the next question, to ask why in the name of god are you using the formula
X = (A'*A)\(A*B);
That just creates more numerical problems. The solution in MATLAB is:
X = A\B;
  2 件のコメント
Anna B.
Anna B. 2022 年 4 月 28 日
The matrix A has i rows and 5 columns (each row has the measured Ui and Ii in it). It is a numerical problem for shure- but I can't find the reason...
p.s.
with C=A\B, i get the problem:
"Warning: Rank deficient, rank = 4, tol = 5.308769e-12."
C = 5×1
3.9325e-03
-1.1491e-03
0
3.9130e-02
5.5652e-01
with C=(A'*A)\(A'*B), i get the problem:
"Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.079731e-22."
C = 5×1
3.9325e-03
-1.1491e-03
-1.9817e+00
8.9764e-03
5.5652e-01
Walter Roberson
Walter Roberson 2022 年 4 月 29 日
When A has i rows and 5 columns, then rank(A'*A) is at most min(i, 5)

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

カテゴリ

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

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by