Это происходит из-за большого динамического диапазона ваших данных.
Попробуйте, например:
x = [10^-10 10^10];
disp(x);
Результат:
1,0e + 010 *
0,0000 1,0000
Это выглядит как первое значение ноль, но это не так. Это почти ноль по сравнению со вторым. Это не удивительно. Попробуйте добавить к большому значению маленькое и вычесть, и вы получите ноль. Это связано с арифметикой с плавающей запятой. Следующее выражение true
isequal( (x(1)+x(2)) - x(2) , 0)
Что можно сделать?
1) Действительно высокий динамический диапазон может вызвать проблемы при любых вычислениях. Постарайтесь понять, откуда это произошло, и решить проблему в более широком контексте.
2). Вы можете попробовать установить
format long
Это может улучшить ситуацию визуально в некоторых случаях.