Интерполяция в Simulink [Matlab] - PullRequest
2 голосов
/ 26 марта 2011

У меня есть три матрицы, которые содержат значения времени и соответствующей функции.Мне нужно, чтобы значения функций суммировались со временем.Вот мой набор данных (столбцы данных отмечены красным): Как видите, столбцы имеют разные значения времени и функций, поэтому мне нужно сначала их интерполировать.Я пробовал эту модель, которая не имела никакого эффекта: enter image description here

Буду признателен за любую помощь в решении моей проблемы

Ответы [ 3 ]

1 голос
/ 29 марта 2011

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

  • A Блок таблицы поиска позволит вам интерполировать значенияваши функции в разные моменты времени.Это заменит блок «Interp», показанный в вашей модели выше.Здесь есть несколько вариантов, в зависимости от того, как вы хотите инициализировать данные таблицы в модели:

    1. Если у вас есть набор данных, который останется неизменным на протяжении всего моделирования, выможно просто жестко закодировать эти данные в свойство Таблица данных блока.В этом случае вы можете использовать блок таблицы поиска , более общий блок таблицы поиска (nD) или Интерполяция с использованием блока предварительного просмотра (в сочетании с блоком предварительного просмотра ).

    2. Если вы хотитечтобы загрузить данные таблицы из рабочей области во время моделирования, вы можете использовать динамический блок Lookup Table или интерполяция с использованием блока Prelookup со свойством Source , установленным для использования входного порта.В этом случае вам придется загрузить данные, используя из блока Workspace (как вы делали выше), а затем убедиться, что вы правильно отформатировали данные таблицы для использования в блоке интерполяции.

  • A Блок накопленной суммы позволит вам сохранить промежуточный итог значений, которые ваши функции создают за время,Если вы хотите посмотреть промежуточный итог для каждой функции в отдельности, вам придется добавить один блок накопленной суммы к выходу каждого блока интерполяции, а затем отправить каждый из них в свою область.Если вы хотите посмотреть промежуточный итог для всех функций, добавленных вместе, то вы можете использовать Суммарный блок , как вы делали выше, чтобы добавить свои три сигнала, затем добавить кумулятивную суммузаблокировать этот вывод перед отправкой в ​​область видимости.

0 голосов
/ 29 марта 2011

Я бы использовал блок «Динамическая таблица поиска» в библиотеке Simulink> Lookup таблиц вместо блока interp и отделил бы xdat (столбец времени t) и ydat (значения) каждый в отдельной переменной / константе.

0 голосов
/ 26 марта 2011

Возможно, вы захотите заменить блоки «из рабочего пространства» на «константные» блоки.

Постоянные блоки позволяют вам установить значение на что угодно, что может быть оценено в командной строке. Это включает ванильные числа (1, 6, 100, 1e6), массивы (1: 3, 1: 2: 11, нули (23,1), единицы (10,4) * 6) и переменные рабочей области (simin1, simin2) ).

С другой стороны, блоки «Из рабочего пространства» читают по одному элементу за выполнение из переменной.

Похоже, вы хотите, чтобы все точки передавались в функцию interp при каждом выполнении. (Другой способ сформулировать это так: вход «Pts» в блок interp является константой, порт «in» (время) является единственным входом, который изменяет каждое выполнение.)

...