2014-09-17 4 views
1

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

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

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

enter image description here

ответ

1

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

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

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

sample_ydata["0:13"] 

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