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