есть ли в Simulink способ использовать один и тот же набор блоков для нескольких сигналов (без копирования этих блоков)? - PullRequest
1 голос
/ 31 января 2011

Я реализую некоторое отслеживание головы и получаю 2 матрицы горизонтальных скоростей. (Векторное поле разложено на вертикальные и горизонтальные скорости). Для каждой из этих матриц я делаю некоторые математические вычисления, чтобы вычислить фактическое отслеживание головы.

У меня вопрос: есть ли способ сделать эту математику (которая представляет собой набор блоков) в обеих матрицах, не копируя математические блоки в каждый сигнал?

Трудно объяснить, вот скриншот моей модели: simulink модель http://luka.s3.amazonaws.com/headtracking.png Вы можете видеть, что у блока "complex to real-imag" есть 2 выхода (это самый маленький в середине). Затем средний блок и схема интегратора вычисляют скорость и положение головки для реальной матрицы (горизонтальное положение). Я хочу сделать точно такую ​​же процедуру на воображаемой матрице (вертикальное направление). Очевидно, я могу просто скопировать блоки, но наверняка должен быть лучший способ сделать это? В некотором смысле я ищу аналог цикла в «нормальном программировании», например, C или что-то подобное, где блок кода выполняется несколько раз на разных входах.

Ответы [ 2 ]

5 голосов
/ 20 февраля 2011

Вы можете создать библиотеку в Simulink, которая содержит код, на который вы можете ссылаться несколько раз.

Перейдите в Файл -> Создать -> Библиотека. В открывшемся окне модели вы можете создать любое количество подсистем с любым кодом, который вам нужен. Затем просто перетащите подсистему из библиотеки в вашу модель. Подсистема теперь появится в вашей модели с небольшим значком стрелки в левом нижнем углу. Это указывает на то, что подсистема в модели является ссылкой. Вы можете перетащить в вашу модель столько экземпляров библиотечной подсистемы, сколько пожелаете, точно так же, как вы можете вызывать функцию столько раз, сколько пожелаете на любом другом языке программирования.

Если щелкнуть правой кнопкой мыши подсистему в вашей модели, вы можете выбрать «Параметры ссылки -> Перейти к блоку библиотеки», чтобы вернуться в библиотеку. Вы можете вносить изменения в свою модель и распространять их обратно в библиотеку.

1 голос
/ 31 января 2011

Один из способов простого повторного использования набора блоков - создать из них подсистему .В вашем случае вы можете создать подсистему, сгруппировав существующие блоки , а затем просто скопировать и вставить свою подсистему, чтобы использовать ее для вашего воображаемого вывода.

Хотя это потенциально более сложно, вы также можете посмотретьиспользовать мультиплексорные сигналы , чтобы избежать необходимости копировать части вашей модели.

...