Эта модель показывает потенциальное использование блока Find Nonzero Elements. Этот блок выводит сигнал переменного размера, содержащий индексы ненулевых значений входа.
Откройте модель sldemo_varsize_channel_pow_alloc
в качестве примера. Эта модель реализует waterfilling алгоритм для получения оптимального выделения степени для каналов связи, когда бюджет степени существует. Включенные каналы связи независимы (i.e., параллельные каналы), и имеют различный уровень шума.
Алгоритм итеративно увеличивает значение ватерлинии, так, чтобы каналы, которые имеют уровень шума меньше, чем ватерлиния, были широковещательно переданы. Степень, используемая этими, передача образовывает канал, равна различию между ватерлинией и уровнем шума канала. Сумма степени, используемой всей передачей каналов, должна удовлетворить бюджету степени в заданном допуске.
Блок Find Nonzero Elements используется в вычислении общей степени, используемой для определенного значения ватерлинии. Каналы, которые собираются передать на том уровне ватерлинии, выбраны, использовав логическую индексацию. Логические индексы получены после пороговой обработки различие ватерлинии и уровня шума канала. В результате каналы с уровнем шума, больше, чем ватерлиния, присвоены логический 0
, и те с уровнем шума ниже ватерлинии присвоены логический 1
. Блок Find Nonzero Elements используется для преобразования логических индексов в линейные индексы. Обратите внимание на то, что этот сигнал правильно моделируется сигналом переменного размера, поскольку количество каналов ниже порога неизвестно во время компиляции. Линейные индексы поданы в Селекторный блок, который выбирает степени передачи канала. Впоследствии, эти степени суммированы, чтобы получить текущее значение используемой степени. Если это значение меньше, чем бюджет степени, ватерлиния увеличена, и процесс повторяется, пока используемая степень не равняется ограничению степени.