Работа с массивами
-
- interested
- Сообщения: 8
- Зарегистрирован: 26 мар 2014, 21:27
- Версия LabVIEW: 2016
- Контактная информация:
Работа с массивами
Здравствуйте!
Помогите пожалуйста разобраться с одним вопросиком:
Есть двумерный массив. Нужно выделить отсчёты сигнала и убрать шум. Для этого я решил использовать алгоритм CFAR. В этом случае выделяется двумерный массив меньшего размера (рисунок приложил к сообщению), задаются защитные ячейки и ячейка которая находится в центре этого массива, проверяется на наличие в ней сигнала. И так этим массивом (окном) нужно пробежаться по всему исходному массиву. Я реализовал это через двойной For Loop, но сейчас проблема в том, как мне собрать из этих массивов исходный массив?
Помогите пожалуйста разобраться с одним вопросиком:
Есть двумерный массив. Нужно выделить отсчёты сигнала и убрать шум. Для этого я решил использовать алгоритм CFAR. В этом случае выделяется двумерный массив меньшего размера (рисунок приложил к сообщению), задаются защитные ячейки и ячейка которая находится в центре этого массива, проверяется на наличие в ней сигнала. И так этим массивом (окном) нужно пробежаться по всему исходному массиву. Я реализовал это через двойной For Loop, но сейчас проблема в том, как мне собрать из этих массивов исходный массив?
- Вложения
-
- CFAR для ФРК.vi
- (17.88 КБ) 94 скачивания
-
- professor
- Сообщения: 3406
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Работа с массивами
зависит от метода сборки.
В простейшем случае (если за каждый цикл получаете один элемент), то выходные тунели с автоиндексацией.
В простейшем случае (если за каждый цикл получаете один элемент), то выходные тунели с автоиндексацией.
-
- interested
- Сообщения: 8
- Зарегистрирован: 26 мар 2014, 21:27
- Версия LabVIEW: 2016
- Контактная информация:
Re: Работа с массивами
А если за каждый цикл получается двумерный массив (как в моём случае), как тогда можно это сделать? Вопрос именно в этом...Artem.spb писал(а):зависит от метода сборки.
В простейшем случае (если за каждый цикл получаете один элемент), то выходные тунели с автоиндексацией.
-
- professor
- Сообщения: 3406
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Работа с массивами
повторяю: всё зависит от метода сборки. Если надо просто последовательно склеить, то та же автоиндексация с конкатенацией, а если элементы соседних подмассивов обрабатываются (складываются, среднее и т.п.), то так не прокатит.
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Работа с массивами
у вас в профиле написано 2011 версия, а файл сделан в 2016 !mr.Getsby писал(а):Здравствуйте!
Помогите пожалуйста разобраться с одним вопросиком:
Есть двумерный массив. Нужно выделить отсчёты сигнала и убрать шум. Для этого я решил использовать алгоритм CFAR. В этом случае выделяется двумерный массив меньшего размера (рисунок приложил к сообщению), задаются защитные ячейки и ячейка которая находится в центре этого массива, проверяется на наличие в ней сигнала. И так этим массивом (окном) нужно пробежаться по всему исходному массиву. Я реализовал это через двойной For Loop, но сейчас проблема в том, как мне собрать из этих массивов исходный массив?
Сейчас некогда разбираться в особенностях, но для свертки с ядром можно использовать уже готовую функцию 2D Convolution.
Посмотрите help (http://zone.ni.com/reference/en-XX/help ... nvolution/), наверняка Вам именно это и нужно, только "ядро свертки" правильно опишите.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- interested
- Сообщения: 8
- Зарегистрирован: 26 мар 2014, 21:27
- Версия LabVIEW: 2016
- Контактная информация:
Re: Работа с массивами
Спасибо за ответ! Не совсем понял как тут использовать свёртку и что она даст??IvanLis писал(а): у вас в профиле написано 2011 версия, а файл сделан в 2016 !
Сейчас некогда разбираться в особенностях, но для свертки с ядром можно использовать уже готовую функцию 2D Convolution.
Посмотрите help, наверняка Вам именно это и нужно, только "ядро свертки" правильно опишите.
Мне нужно просто посчитать средний уровень training cells и сравнить его с уровнем в красной ячейке. Если этот уровень выше, то значит что в красной ячейке сигнал и мы его оставляем. Если уровень ниже, то значению этой ячейки присваиваем 1. К примеру мой исходный массив размером 1024x1024. А моё окно всего лишь 11x13. И этим окном нужно пробежаться по всему массиву 1024x1024 и сравнить каждую ячейки со средним уровнем training cells. В принципе задача то не очень сложная... и я уже это сравнение и принятие решения реализовал... но вернуться снова к массиву 1024x1024 проблема... пробовал сделать по совету Artem.spb. Labview выдал ошибку "memory full". Очень затратная операция получается....
-
- interested
- Сообщения: 8
- Зарегистрирован: 26 мар 2014, 21:27
- Версия LabVIEW: 2016
- Контактная информация:
Re: Работа с массивами
Уже что-то стало обрабатывать) это радует) но непонятно почему размерность массива после обработки увеличилась... исходный массив 1353х292 а после обработки выходит массив 17588х3212. Он увеличился пропорционально размером моего сдвигаемого окна 13х11...
- Вложения
-
- CFAR для ФРК.vi
- (24.14 КБ) 82 скачивания
-
- interested
- Сообщения: 8
- Зарегистрирован: 26 мар 2014, 21:27
- Версия LabVIEW: 2016
- Контактная информация:
Re: Работа с массивами
Понял почему... у меня окно сдвигается не на размер окна а на один отсчёт... поэтому и размерность стала больше...
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Работа с массивами
Нужно внимательно почитать описание функции.mr.Getsby писал(а):Спасибо за ответ! Не совсем понял как тут использовать свёртку и что она даст??
Мне нужно просто посчитать средний уровень training cells и сравнить его с уровнем в красной ячейке.
Результат вычисляется по формуле:
Допустим вам нужно пройтись окном 3*3 для осреднения всех значений, тогда ядро будет размером 3*3, а значение его коэф. будет 1/9.
Например необходимо исключить центральный элемент, тогда приравниваем соответствующий коэф. "0", а остальные 1/9.
Посмотрите например: https://habrahabr.ru/post/142818/
В результате свертки получится 2D массив со средними значениями.
Потом останется их сравнить и принять решение.
Выкладывайте файл в более низкой версии (например 2010) со всеми заполненными значениями. Будет время постараюсь помочь.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- interested
- Сообщения: 8
- Зарегистрирован: 26 мар 2014, 21:27
- Версия LabVIEW: 2016
- Контактная информация:
Re: Работа с массивами
Ну это более сложный вариант... Я просто с помощью Delete from array вытащил нужные мне отсчёты и посчитал их среднее. Сложность была в том что есть ещё защитные ячейки, которые не должны вносить вклад в среднее. Они выделены жёлтым на рисунке, который я приводил в первом сообщении.. Поэтому я решил просто порезать массив на два с помощью Delete from array.IvanLis писал(а):Нужно внимательно почитать описание функции.
Допустим вам нужно пройтись окном 3*3 для осреднения всех значений, тогда ядро будет размером 3*3, а значение его коэф. будет 1/9.
Например необходимо исключить центральный элемент, тогда приравниваем соответствующий коэф. "0", а остальные 1/9.
В результате свертки получится 2D массив со средними значениями.
Потом останется их сравнить и принять решение.
Выкладывайте файл в более низкой версии (например 2010) со всеми заполненными значениями. Будет время постараюсь помочь.
В принципе наверное можно попробовать сделать простую децимацию... чтобы вернуться к исходной размерности... но это какой-то костыль получится..
Пересохранил все программы в 2010 версии.. вот только исходный файл для обработки сюда приложить не смог, потому что он весит 70 Мб. Залил на yandex disk
https://yadi.sk/d/qWoI8Bsf3Tq5Gy
- Вложения
-
- CFAR для ФРК.vi
- (13.59 КБ) 100 скачиваний
-
- Spectrogram (SubVI).vi
- (11.64 КБ) 94 скачивания
-
- Блок - цветовая схема ДХ.vi
- (13.17 КБ) 92 скачивания
-
- Блок расчёта видимого окна по задержке.vi
- (8.06 КБ) 96 скачиваний
-
- Блок чтения ионограммы.vi
- (21.93 КБ) 86 скачиваний
-
- Обработка ФРК.vi
- Файл запуска
- (17.47 КБ) 88 скачиваний
-
- interested
- Сообщения: 8
- Зарегистрирован: 26 мар 2014, 21:27
- Версия LabVIEW: 2016
- Контактная информация:
Re: Работа с массивами
Разобрался. Можно было реализовать через shift регистр. И осуществлять замену сразу в исходном массиве. Всем спасибо! Вопрос больше не актуален..
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 16 Ответы
- 3263 Просмотры
-
Последнее сообщение Artem.spb
-
- 4 Ответы
- 220 Просмотры
-
Последнее сообщение Andrew Lunev