Здравствуйте, форумчане!
Имеется прибор NI-USB6366, при помощи которого (через signalexpress) снимается одновременно несколько сигналов, записываемых в TDMS файл.
Есть необходимость выделить из всего файла поканальные данные и сохранить их преобразовав в бинарный формат с учетом масштаба.
В целом с задачей справился,
но есть непонятная ситуация.
Если смотреть на общую картинку открытого в LV файла и его вывод на графику, то вижу что сигнал соответствует исходному (тут одновременно имеются четыре сигнала)
Но, если открыть полученные бинарные файлы в матлабе, то наблюдаю такую картину
В начале и конце появились странные выбросы...
Так выглядит начало
А так финал
Хочется понять, что порождает такие всплески и как это победить?
Самый простой вариант - обрезать в матлабе, но это некрасиво...
Неверное отображение данных
-
- professor
- Сообщения: 3407
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Неверное отображение данных
для меня более непонятная ситуация, как вы записывая i16 потом умудряетесь видеть значения 0,15?
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Неверное отображение данных
Все банально. На этих участках сигнал выходит за пределы диапазона +-32767. Когда происходит деление на VoltageRange, а потом умножение на 32767. Но потом правильность преобразования вы отдаете на откуп функции to Int16. А вы уверены, что она корректно работает с величинами за пределами диапазона??? А вот и нет.
Тут варианта два: первый делать преобразование с запасом, т.е применять коэффициент например 32000 с преобразованием в I16, либо увеличивать VoltageRange до реального диапазона АЦП. Но и тут могут быть нюансы.
Второй, принципиально надежный: обрезать значения функцией In Range с указанием +32767 и -32768 в максимуме и минимуме, а уж потом делать To Int16
Похожая проблема может быть уже в матлабе, но с тем же эффектом
Тут варианта два: первый делать преобразование с запасом, т.е применять коэффициент например 32000 с преобразованием в I16, либо увеличивать VoltageRange до реального диапазона АЦП. Но и тут могут быть нюансы.
Второй, принципиально надежный: обрезать значения функцией In Range с указанием +32767 и -32768 в максимуме и минимуме, а уж потом делать To Int16
Похожая проблема может быть уже в матлабе, но с тем же эффектом
Re: Неверное отображение данных
Если приглядеться, то можно заметить, что перед тем как преобразовать в int16, поток сперва нормируется (делится) на величину указанную в окне VoltageRange (там установлено значение 5, это абсолютное значение шкалы при которой производилась запись), затем нормированный поток умножается на константу 2^15-1=32767, т.е., на мой взгляд, если число меньше или равное +-5 разделить на 5 и умножить на 32767, то получить значение превышающее (в абсолюте) +-32767 очень затруднительно...
А матлабовские графики отрисованы в целочисленных знаковых единицах и исходные 0,18 примерно соответствуют 1200, как-то так.
Попробую, вдруг получится.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение