Матлаб / Симулинк полифит - PullRequest
0 голосов
/ 02 марта 2019

Я хочу подогнать уравнение второй степени к графику, как показано на Figure 1.

У меня уже есть блоки "Из рабочего пространства" и блоки "Область" Figure 2.

Теперь моя проблема заключается в том, как мне подогнать график второй степени.У меня уже есть «постоянный» блок, где у меня есть «машинная» матрица.Затем у меня есть блок «рампа», который создает наклон между 1-365, как показывает Figure 3.

Затем у меня есть блоки «Наименьших квадратов полиномиальной подгонки» и «Полиномиальная оценка» Figure 4.Что я делаю не так, потому что он не работает?

Это мой код Matlab:

n = importdata('n.txt',';')
cars = n(:,2)
trucks = n(:,3)
bus = n(:,4)
t = linspace(1,365,365)
t = transpose(t)

Это дает мне ошибку "Ошибка в ширине или размерах порта. Выходной порт 1 of.. является [32x3] матрицей. "и «Количество строк на входе A должно соответствовать количеству строк на входе B».

1 Ответ

0 голосов
/ 03 марта 2019

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

Это показывает примергде коэффициенты полинома как функция времени известны, затем с помощью блока Polynomial Evaluation вычислить полином, а затем с помощью Подгонка полинома по методу наименьших квадратов , чтобы получить коэффициентыПолином снова вернулся.То есть, это показывает, что когда данные «срабатывают», хотя оба блока возвращаются туда, откуда вы начали, якобы дает вам уверенность в том, что блоки «делают правильные вещи».

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

Если вы посмотрите документацию для блока Polynomial Evaluation , есть несколько примеров того, что входные данныеожидается, что будет.

Первый вход - это независимая переменная, которая в вашем случае выглядит так, как будто это должно быть время моделирования.Вы можете использовать Ramp для этого, но почему бы просто не использовать блок Clock .(Если вы используете Ramp, то вы хотите, чтобы он имел Initial Value из 0, а не 365, как показано на изображении в вашем вопросе.)

Вторым вводом являютсякоэффициенты полинома как вектора.Это может быть предварительно сгенерированная функция (с использованием, например, полифита MATLAB), или она может быть сгенерирована на лету с помощью блока Полиномиальное соответствие наименьших квадратов .

То есть, похоже, что вы действительно хотитеследующая модель:

Polyval

...