Неявное преобразование из системного массива в массив ilnumerics не сохраняет двойной точности

Когда я назначаю системный массив значений типа double для массива двойных чисел, значения округляются до ближайшего целого числа. Это происходит особенно для больших массивов.

Есть ли способ в ILnumerics указать, до скольких десятичных знаков должно происходить округление?

Следующий скриншот показывает проблему. Sample_pulsedata - это двойной массив длиной 1860, который я назначаю для sample_ydata.

введите описание изображения здесь

1 ответ

Решение

Элементы не очень округлены. Эффект, скорее, происходит от способа отображения элементов в подсказках к данным Visual Studios. ILNumerics пытается найти общий масштабный коэффициент, который позволяет выровнять все элементы в массиве.

В вашем примере - предположительно - существуют большие значения с более высокими индексами, которые в настоящее время не отображаются (прокрутите вниз, чтобы найти их). Эти элементы приводят к тому, что масштабный коэффициент равен 1/10^4. Это указано в первой строке, индекс [0]: '(:;:) 1e+004'. Поэтому 32,57 необходимо округлить до 33, чтобы вписаться в 4 цифры после десятичной точки. "4" является фиксированным значением в ILNumerics и не может быть легко изменено.

Естественно, действительные значения элементов массива не затрагиваются. Вы можете использовать окно Watch, чтобы показать только интересную часть массива, без эффекта округления:

sample_ydata["0:13"]

Или, что еще лучше, используйте визуализатор массива ILNumerics для графической визуализации ваших данных. Это не только дает хороший обзор всего массива, но также предотвращает появление таких артефактов, с которыми вы столкнулись.

Другие вопросы по тегам