Постоянное хранение и замена значений в массиве - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь считать амплитуду с формы волны и светить зеленым, желтым или красным светом в зависимости от амплитуды сигнала. Я довольно новичок в labVIEW и не смог реализовать свою идею, которая бы работала с любым другим языком программирования, который я знаю, для работы. То, что я пытаюсь сделать, это взять значение сигнала, и при каждом его обновлении я буду сохранять значение амплитуды в индексе большого массива. С каждым измерением, сохраненным в индексе n + 1 массива.

После определенного количества точек данных я хочу начать заново и заменить значения в массиве (я использую узел формулы с модулем для этого). Сохраняя конечное количество индексов для проверки максимального значения, я ограничиваю свою проверку амплитуды определенным периодом времени.

Однако моя проблема заключается в том, что всякий раз, когда я использую подмножество массива замены, чтобы вставить новое значение в индекс n,все остальные индексные точки стираются. Оказывать это в значительной степени бесполезно. Я думал, что массив Initialize вызывает проблемы, но я просто не могу понять, что здесь делать.

Я пытался создать только основные массивы на передней панели, но это либо массивы элементов управления или индикаторов, ине может быть написано и прочитано, его можно либо контролировать (читать, но не писать), либо указывать (писать, но не читать)? Может быть, просто невозможно сделать то, что я имел в виду, красноречиво в LabVIEW. Если это не возможно сделать с массивами в LabVIEW, я поищу другой способ сделать это.

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

Я ожидал, что массив сохранит свои ранее введенные данные для индекса n-1 при вводе индекса n. И будет заменен только после того, как индекс вернется к этой конкретной точке.

Вместо этого каждый раз, когда вводится новый индекс, инициализируется новый массив.

picture of the code

ссылка для загрузки дляVI

1 Ответ

2 голосов
/ 07 ноября 2019

Что вы хотите сделать:
Перенос содержимого измененного массива в следующую итерацию цикла WHILE.

Что происходит:
На каждой итерации содержимое массиватот же самый. Это содержимое исходного массива, который вы создали снаружи.

Чтобы решить эту проблему, щелкните правой кнопкой мыши оранжевый квадрат на левой границе цикла и сделайте его «регистром сдвига». Символ изменится, и аналогичный символ появится на правой границе. Теперь подключите измененный массив к символу справа. То, что вытекает в этот символ справа, приходит от левого символа на следующей итерации.

Редактировать:

Я немного оптимизировал ваш код. Существует функция по модулю, и предложение IF может обрабатывать диапазоны. ..3 означает «значения ниже или равны 3». Следующий случай - «По умолчанию», следующий «7 ..». К сожалению, это работает только для целых чисел. В противном случае можно использовать вложенные предложения IF с компаратором < или аналогичным.

enter image description here

...