Two different arrays on one chart
- jane_wild
- master
- Сообщения: 461
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 84 раза
- Поблагодарили: 15 раз
- Контактная информация:
Two different arrays on one chart
Ребята прошу помощи / совета. Суть такова: работают два AI модуля на cDAQ с различной частотой дискретизации. Необходимо отобразить собранные данные на одном Chart. Для простоты и лучшего понимания я сохранила в константы два массива ( по одному ai каналу с каждого модуля) и уже с ними провожу манипуляции. То бишь эти массивы получены за одинаковый период времени но с различной частотой дискретизации и как следствие имеют различный размер. Каким образом возможно отобразить их на одном waveform chart? В приложеном VI мной сделана робкая попытка сделать это. Но почему то после resample массив немного меньше по размеру (114142 точек вместо ожидаемых 115000). К тому же мне важна скорость и я сомневаюсь что это будет работать со всеми 32 мя каналами в реальном времени. Может нужно испоьзовать интерполяцию, но я не понимаю каким образом сделать это. Посоветуйте как правильно поступать в данном случае. Спасибо
- Вложения
-
- Two Difference Array - one Chart.vi
- (670.66 КБ) 114 скачиваний
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Two different arrays on one chart
К сожалению, не могу открыть VI (версия слишком новая). Но могу посоветовать следующее: использовать массив Waveforms ( у каждого канала свой t0 и dt ) для подачи на Chart, должно адекватно отображаться без ресемплинга. Единственное требование, чтобы t0 следующей пачки плота был не меньше t0+dt*N предыдущей пачки, иначе буфер Chart будет очищаться и строиться заново. А так в буфер можно кидать Waveform хоть с одной точкой в массиве Y. Получается типа XY Graph с буфером.
- jane_wild
- master
- Сообщения: 461
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 84 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Two different arrays on one chart
Вот сохранила в LV2010
- Вложения
-
- Two Difference Array - one Chart.vi
- (340.81 КБ) 122 скачивания
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Two different arrays on one chart
Надо знать dt сигналов. А так - вот простое решение.
upd достаточно поставить dt1 = 0.01, dt2 = 0.001 и все нормально показывает
upd достаточно поставить dt1 = 0.01, dt2 = 0.001 и все нормально показывает
- jane_wild
- master
- Сообщения: 461
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 84 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Two different arrays on one chart
Спасибо, это работает. Но я думаю что было бы удобнее одновременно передавать данные в виде 2D массива из acquisition loop для signal processing и далее в user interface loop. А для этого нужно преобразовать их к одному размеру, иначе недостающие данные в "медленных" каналах заполняются нулями... К тому же мне будет нужно переделать весь проект, который для манипуляций с данными использует именно 2D array Раньше я встречала где то решение использующее интерполяцию (а может это был re-sampling), там после сбора данных из различных источников, для signal processing, передавался кластер (2D массив собраных каналов и multiplier для графика)
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Two different arrays on one chart
Добавьте к 2D массиву данных еще описание: размер данных медленного канала, dt первого и второго сигналов. Для унификации это массив из размера данных и dt. Пусть дальше у вас по программе они путешествуют, только в сочетании с этим описанием вы можете их спокойно и непротиворечиво обрабатывать.