2012-01-28 1 views
1

У меня возникла проблема с просмотром двойных данных в консоли matlab. Фактически, я импортирую матрицу из своего файла данных. Значение конкретной строки и столбца было 1.543, но в консоли, когда я использую disp(x), где x - импортированная матрица, отображается как 1.0e+03 * 0.0002. Однако, когда я пытаюсь получить доступ к этому конкретному элементу в матрице, используя disp(x(25,25)), где 25 и 25 - номера строк и столбцов, которые он показывает, являются 1.543. Поэтому я смущен. Любые разъяснения. Это просто, когда я печатаю всю матрицу, она отображается как 1.0e+03 * 0.0002.Проблема при просмотре двойных значений

ответ

2

Следующая команда должна исправить это. Это только проблема с отображением, точность фактических значений в матрице не влияет:

format shortG 
2

Это происходит из-за высокого динамического диапазона ваших данных. Попробуйте, например:

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 

Это может улучшить ситуацию визуально для некоторых случаев.