Проблема в просмотре двойных значений - PullRequest
1 голос
/ 28 января 2012

У меня проблема с просмотром двойных данных в консоли 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 ]

2 голосов
/ 29 января 2012

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

format shortG
2 голосов
/ 28 января 2012

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

 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

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

...