how to solve rank deficiency warning problem?

8 views (last 30 days)
neha
neha on 28 Jan 2013
Answered: Kerry Hipps on 15 Dec 2019
I have written a code but it is showing some warnings due to which i m getting improper outputs.....the code is as follows:
any help would be appreciated....
clear
clc
clf
format compact
% the data
y=[9.64E-11 5.29E-11 5.34E-11 5.32E-11 5.34E-11 5.34E-11 5.36E-11 5.35E-11 5.29E-11 5.29E-11 5.29E-11 5.30E-11 5.28E-11 5.28E-11 5.29E-11 5.28E-11 5.28E-11 5.27E-11 5.27E-11 5.28E-11 5.27E-11 5.26E-11 5.27E-11 5.26E-11 5.27E-11 5.26E-11 5.26E-11 5.26E-11 5.26E-11];
f=[1.00E+02 3.54E+03 6.99E+03 1.04E+04 1.39E+04 1.73E+04 2.08E+04 2.42E+04 2.77E+04 3.11E+04 3.45E+04 3.80E+04 4.14E+04 4.49E+04 4.83E+04 5.18E+04 5.52E+04 5.87E+04 6.21E+04 6.56E+04 6.90E+04 7.24E+04 7.59E+04 7.93E+04 8.28E+04 8.62E+04 8.97E+04 9.31E+04 9.66E+04];
w=(2*pi)*f;
% the proposed functionality (fh is a handle to the function)
fh=@(b,w) 1./(((b(1)+(b(2)./(1+(b(2).*w.*b(3)).^2))).^2)./((b(2).^2.*b(3))./(1+(b(2).*w.*b(3)).^2))+((b(2).^2.*w.*b(3))./(1+(b(2).*w.*b(3)).^2)));
% guess values for parameters (beta0)
b0=[1,1,1];
% plot the raw data
plot(w,y,'s','markersize',5,'color',[0,0,0]);
hold on
% determine best fit values for coefficient (bhat)
bhat=nlinfit(w,y,fh,b0);
% plot the fit
xf = linspace(w(1), w(length(w)));
plot(xf,fh(bhat,xf),'linewidth',1,'color',[1,0,0]);
legend('original data','fitdata','location','Best') % the result
bhat(1)
bhat(2)
bhat(3)
the warnings are as follows:
Warning: Rank deficient, rank = 2, tol = 1.7048e-020.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 5.8195e-021.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 1.9867e-021.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 6.7835e-022.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 2.3173e-022.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 7.9252e-023.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 2.7174e-023.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 9.3744e-024.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 3.2799e-024.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 1.1852e-024.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 4.6048e-025.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 2.0921e-025.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 1.1485e-025.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 1.1485e-025.
> In nlinfit>LMfit at 322
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 1.1485e-025.
> In nlinfit>LMfit at 322
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 7.8466e-026.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 7.5760e-026.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 7.5760e-026.
> In nlinfit>LMfit at 322
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 7.5760e-026.
> In nlinfit>LMfit at 322
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 7.4567e-026.
> In nlinfit>LMfit at 295
In nlinfit at 167
In neha_test1 at 17
Warning: Rank deficient, rank = 2, tol = 7.4567e-026.
> In nlinfit>LMfit at 322
In nlinfit at 167
In neha_test1 at 17
Warning: The Jacobian at the solution is ill-conditioned, and some
model parameters may not be estimated well (they are not identifiable).
Use caution in making predictions.
> In nlinfit at 224
In neha_test1 at 17
could anybody fix this problem...?
  3 Comments
shantanu
shantanu on 27 Jan 2014
hiii what does colour signify here thanks in advance.
Kerry Hipps
Kerry Hipps on 19 Jun 2019
I too have questions about rank deficiency, in my case it is
Warning: Rank deficient, rank = 3, tol = 4.989138e-12.
> In nlinfit>LMfit (line 587)
In nlinfit>nlrobustfit (line 768)
In nlinfit (line 315)
In SPR_ODE45_P4x (line 58)
The last is my calling program

Sign in to comment.

Answers (2)

Artur Hahn
Artur Hahn on 14 Dec 2019
I too have a problem with the rank deficiency. I get "Warning: Rank deficient, rank = 1, tol = 1.666613e+04."
when trying to solve a system of linear equations c = A\y. Any help or explanation of the meaning/problem would be appreciated.

Kerry Hipps
Kerry Hipps on 15 Dec 2019
No solution yet. I switched to lsqcurvefit. Would still like to find a solution.

Categories

Find more on Dynamic System Models in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!