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