Simulink: ошибка в ширине или размерах порта при передаче матриц в модель

Я пытаюсь создать модель simulink, которая выполняет несколько матричных умножений, но, похоже, не могу правильно ввести входные данные.

Это настройка модели. Ветер и гравитация представляют собой векторы 3x1, а DCM — матрицу 3x3, исходящую от объекта с фиксированной массой 6DOF.

Использование Модели

Сама модель выглядит так:

Содержание модели

Учитывая размеры, ожидаемое умножение должно привести к (3x3) * (3x1) = (3x1). Однако при запуске моделирования я получаю несколько ошибок несоответствия размеров.

Error using uavsim (line 7)
Error due to multiple causes.
Caused by:
    Error using uavsim (line 7)
    Error in port widths or dimensions. 'Output Port 1' of 'storm_uav/Constant2' is a [3x1] matrix.
    Error using uavsim (line 7)
    Error in port widths or dimensions. 'Input Port 1' of 'storm_uav/Model5' is a one dimensional vector with 1 elements.

Я не уверен, в чем здесь проблема, поскольку, по моему мнению, размеры должны быть правильными. Кажется, я не могу передать векторы в данную модель, поскольку модель ожидает какое-то другое измерение, даже если оно должно быть унаследовано?

Помощь очень ценится.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
123
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы используете ссылку на модель, с которой я не совсем знаком, но это своего рода предварительно скомпилированный блок. По данным Справочного центра , такой блок имеет «определенный интерфейс», который делает «модель, на которую ссылаются, независимой от ее контекста в иерархии модели».

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

Обновлено:

Чтобы определить атрибут сигнала интерфейса, в частности его размерность, вам необходимо указать размерность Inport корневого уровня эталонной модели (подробнее => Справочный центр).

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

vtx22 05.06.2024 15:03

Другие вопросы по теме