Error using eig. Input matrix contains NaN or Inf.

1 view (last 30 days)
Dear All,
While I am using the attached code (code1.m), I have got this error message:
------
Error using eig
Input matrix contains NaN or Inf.
Error in error_ellipse_fnc (line 18) [eigenvec, eigenval ] = eig(covariance);
------
For replicating the situation, I have attached a .mat (trial.mat) and the function files that contains all parameters needed for running the code.
Please could you check what could be the reason for such an error?
Thank you!
  4 Comments
Walter Roberson
Walter Roberson on 18 Oct 2020
Where are you getting your lla2xyz from? I see a few different possible third-party packages.
Mohammed Soliman
Mohammed Soliman on 18 Oct 2020
Obs, I forgot to attach this function. Please find it attached.
-much apperciated!

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 18 Oct 2020
Revised code1.m. Please re-check whether the data is indeed lat/lon or is cartographic (km)
datavariety = 1; %1: data is lat/long
fid= fopen('error_analysis.out','w');
fprintf(fid,' LAT LON DEP AX1(km) AX2(km) AY1(km) AY2(km) AZ1(km) AZ2(km) EX(km) EY(km) EZ(km) YR MO DY HR MN SC MG ID\n');
%fprintf(' LAT LON DEP AX1(km) AX2(km) EZ(km) AZ YR MO DY HR MN SC MG ID\n');
for i=1:length(id_o)
ii= find(ID_m==id_o(i));
if isempty(ii); continue; end
[x,y,z] = lla2xyz(mean(ey(ii)),mean(ex(ii)),ey(ii),ex(ii),ez(ii));
[ax1,ax2]= error_ellipse_fnc(x, y, datavariety, 1);
[ay1,ay2]= error_ellipse_fnc(x, z, datavariety, 0);
[az1,az2] = error_ellipse_fnc(y, z, datavariety, 0);
stdx=std(x);stdy=std(y);stdz=std(z);
fprintf(fid,'%11.6f%12.6f%8.3f%8.3f%8.3f%8.3f%8.3f%8.3f%8.3f%8.3f%8.3f%8.3f%5i%3i%3i%3i%3i%7.3f%5.1f%10i\n',m(i,2),m(i,3),m(i,4),ax1,ax2,ay1,ay2,az1,az2,...
stdx,stdy,stdz,m(i,11),m(i,12),m(i,13),m(i,14),m(i,15),m(i,16),m(i,17),m(i,1));
end
fclose(fid);
  2 Comments
Mohammed Soliman
Mohammed Soliman on 18 Oct 2020
Dear Walter,
This is great – it works perfectly.
I am going to work on a more extensive example. I will report what happens.
The input data coordinates are lat., lon.
Many thanks for your help.
-much appreciated!
Best Regards, Mohammad
Walter Roberson
Walter Roberson on 18 Oct 2020
note that there are some id_o that do not match any ID_m. The change I made silently moves to the next value, but you might want to consider outputting a warning before moving on.

Sign in to comment.

More Answers (0)

Categories

Find more on Particle & Nuclear Physics in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!