Я пытаюсь смоделировать эффект различных «строительных блоков» фильтра в системе, которая представляет собой конструкцию, основанную на этих фильтрах. Я бы хотел, чтобы основные фильтры были «модульными», т. Е. Они должны быть «заменяемыми», без перезаписи конструкции, основанной на базовых фильтрах.Могу ли я расширить «вложенные» символические функции в Matlab?
Например, у меня есть система фильтров G_0, G_1, которая определяется в терминах некоторых базовых фильтров, называемых H_0 и H_1.
Я пытаюсь сделать следующее:
syms z
syms H_0(z) H_1(z)
G_0(z)=H_0(z^(4))*H_0(z^(2))*H_0(z)
G_1(z)=H_1(z^(4))*H_0(z^(2))*H_0(z)
Это объявляет г-домен я хотел бы работать, и конструкция из двух фильтров G_0, G_1, на основе H_0 основных фильтров , H_1.
Теперь я пытаюсь оценить конструкцию с точкой зрения некоторых основных фильтров:
H_1(z) = 1+z^-1
H_0(z) = 1+0*z^-1
То, что я хотел бы получить в данный момент является расширенным многочленом г. . для вышеприведенных объявлений я хотел бы видеть, что G_0 (z) = 1, а G_1 (z) = 1 + z^(- 4).
Я пробовал такие вещи, как «subs (G_0 (z))», «формула (G_0 (z))», «формула (subs (subs (G_0 (z))))», но я продолжаю получать приводят к терминам H_0 и H_1.
Любые советы? Спасибо заранее.
Edit - некоторые уточнения:
- На самом деле, у меня есть 10-20 передаточные функции, как G_0 и G_1, поэтому я стараюсь, чтобы избежать повторного объявляющий все из них каждый раз, когда я изменить основные блоки H_0 и H_1. Базовые блоки H_0 и H_1 будут на самом деле намного выше, чем в приведенном здесь примере.
- G_0 и G_1 не будут изменены после объявления только H_0 и H_1.
H_0(z^2)
означает использование z^2 в качестве аргумента дляH_0(z)
. Поэтому везде, где z появляется в объявлении H_0, z^2 должно быть вставлено в- Желаемый результат - это функция в терминах z, а не H_0 и H_1.
- Рабочий хак имеет m-файл, содержащий объявления конструкции (G_0 и G_1 в этом примере), которые запускаются каждый раз, когда H_0 и H_1 переопределены. Мне было интересно, есть ли более элегантный способ сделать это в соответствии с приведенным выше (нерабочим) кодом.
В случае, если это не очевиден, я стараюсь не кормить снова полные выражения конструкции после каждого переосмысления основных фильтров ... Спасибо. – Sagie
Я бы сделал это без линии syms H_0 (z) H_1 (z) не нужно, так как вам нужен выход в терминах z не H – mhmsa
Также - повторное подчеркивание требования со второй строки моей Вопрос: Я бы хотел, чтобы базовые фильтры были «модульными», т. е. они должны быть «сменными», без перезаписи конструкции, основанной на базовых фильтрах. Так что H_0 и H_1 не должны считаться «известными», когда я объявляю G_0 и G_1. – Sagie