Страница 1 из 1

Two different arrays on one chart

Добавлено: 24 июл 2017, 18:34
jane_wild
Ребята прошу помощи / совета. Суть такова: работают два AI модуля на cDAQ с различной частотой дискретизации. Необходимо отобразить собранные данные на одном Chart. Для простоты и лучшего понимания я сохранила в константы два массива ( по одному ai каналу с каждого модуля) и уже с ними провожу манипуляции. То бишь эти массивы получены за одинаковый период времени но с различной частотой дискретизации и как следствие имеют различный размер. Каким образом возможно отобразить их на одном waveform chart? В приложеном VI мной сделана робкая попытка сделать это. Но почему то после resample массив немного меньше по размеру (114142 точек вместо ожидаемых 115000). К тому же мне важна скорость и я сомневаюсь что это будет работать со всеми 32 мя каналами в реальном времени. Может нужно испоьзовать интерполяцию, но я не понимаю каким образом сделать это. Посоветуйте как правильно поступать в данном случае. Спасибо

Re: Two different arrays on one chart

Добавлено: 24 июл 2017, 19:29
Borjomy_1
К сожалению, не могу открыть VI (версия слишком новая). Но могу посоветовать следующее: использовать массив Waveforms ( у каждого канала свой t0 и dt ) для подачи на Chart, должно адекватно отображаться без ресемплинга. Единственное требование, чтобы t0 следующей пачки плота был не меньше t0+dt*N предыдущей пачки, иначе буфер Chart будет очищаться и строиться заново. А так в буфер можно кидать Waveform хоть с одной точкой в массиве Y. Получается типа XY Graph с буфером.

Re: Two different arrays on one chart

Добавлено: 24 июл 2017, 20:30
jane_wild
Вот сохранила в LV2010

Re: Two different arrays on one chart

Добавлено: 25 июл 2017, 12:37
Borjomy_1
Надо знать dt сигналов. А так - вот простое решение.
upd достаточно поставить dt1 = 0.01, dt2 = 0.001 и все нормально показывает

Re: Two different arrays on one chart

Добавлено: 25 июл 2017, 14:56
jane_wild
Спасибо, это работает. Но я думаю что было бы удобнее одновременно передавать данные в виде 2D массива из acquisition loop для signal processing и далее в user interface loop. А для этого нужно преобразовать их к одному размеру, иначе недостающие данные в "медленных" каналах заполняются нулями... К тому же мне будет нужно переделать весь проект, который для манипуляций с данными использует именно 2D array Раньше я встречала где то решение использующее интерполяцию (а может это был re-sampling), там после сбора данных из различных источников, для signal processing, передавался кластер (2D массив собраных каналов и multiplier для графика)

Re: Two different arrays on one chart

Добавлено: 25 июл 2017, 16:16
Borjomy_1
Добавьте к 2D массиву данных еще описание: размер данных медленного канала, dt первого и второго сигналов. Для унификации это массив из размера данных и dt. Пусть дальше у вас по программе они путешествуют, только в сочетании с этим описанием вы можете их спокойно и непротиворечиво обрабатывать.