2016-02-05 2 views
1

У меня есть таблица данных, которую можно импортировать в таблицу «2d-lookup» для simulink. Строки и столбцы не равномерно распределены. Как создать модель, которая принимает x, y в качестве входов и дает z как вывод, просто путем интерполяции из таблицы. (т. е. для x, y, которые являются некоторыми значениями, которые находятся между значениями в таблице, он должен генерировать полиномиальное уравнение на основе значений таблицы и принимать входные данные и давать результат).Поиск z для z = f (x, y) в simulink

Я могу получить его с помощью приложения matlab curvefit, но я ограничен для использования simulink.

+0

Я не очень хорошо знаком с Simulink, но то, что вы просите, звучит как «griddedInterpolant». Идея состояла бы в том, чтобы получить данные в MATLAB и создать с ней решеткуInterpolant и использовать ее как-то с Simulink –

ответ

1

Вы уже почти сделали то, что хотите. Использование таблицы поиска 2-D Simulink позволяет автоматически интерполировать данные: First example Посмотрите на это: я установил неравномерные данные, и это работает нормально! Данные таблицы - это значения функции z. Так что просто измените x,y (в моем примере это u1,u2), и вы получите то, что хотите. Вы можете видеть, что он работает для (x,y) = [2 8].

Теперь, разрешите вторую проблему - как взять сумму всех значений z? Важный момент здесь - какую сумму вы хотите получить! Вы знаете, у Simulink есть много разных решателей с переменным или фиксированным шагом. Итак, решая его с фиксированным шагом, например, dt = 0.2 даст вам все ответы за t= 0, 0.2, 0.4, ... и так далее. Он будет интерполировать вас на ввод данных и решить z для каждого, и если вы получите сумму здесь, это будет то, что вы хотите? Если да, то самый простой способ - использовать Integrator блок. Что-то вроде этого: enter image description here

Но! Что делать, если вы хотите разрешить это только для значений, вы устанавливаете в своем x,y в рабочем пространстве ((1 1), (3 8) , (7 10) пар из вашего комментария) и что получить сумму 3 z? Это, са хороший другой вопрос, может быть, это сложнее, чем при использовании 2d таблиц поиска :)

я покажу один из многих возможных решений: перейти к Параметры конфигурации/Solver и набор фиксированный шаг с размер шага = 1. И использовать это: enter image description here

вы можете видеть, что это показывает 101 но оно должно быть в вашем случае 95 (1+24+70)! Это связано с тем, что simulink решает его и для t = (0, 0)! Интерполирующие данные для t=0 дают дополнительные 6. Он легко решает - добавьте в свои z значения таблицы для x,y = 0.

Надеюсь, теперь это ясно!

+0

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

+0

Я не могу добраться до компьютера, теперь я отвечу на ваш вопрос в понедельник, хорошо? –

+0

Нет проблем, могу ли я задать вам еще один вопрос вместе с приведенным выше. Если есть набор запросов (x, y), идущих в качестве входов, и все значения «z» должны быть суммированы для получения одного Z (сумма все z). –

Смежные вопросы