2014-11-17 12 views
0

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

enter image description here

где P = [p1 p2, p2 p3] можно найти с помощью Rung-Кутта Метод интеграции с P (0) = [1 0; 0 1]

Теперь, я хочу написать код matlab, чтобы получить истинное положение z системы и оценить x inwhich x = [x1 x2] '. Это мой код для поиска x и z. Однако результат неверен. Не могли бы вы помочь мне изменить его. Это мой код MATLAB

function z=getPos(x) 
    %% Function to get velocity 
    v=0+1*randn; %r=1; 
    z=[0 1]*x+v; 
return 

Это мой результат enter image description here

Посмотрим помочь мне правильно реализовать для решения. Спасибо

ответ

0

Ваш код может возвращать отрицательное значение, так как randn является нормально распределенным случайным числом со стандартным отклонением 1. Теоретически это может вернуть любое число, и вероятность того, что будет ~ 15%, будет меньше -1.

Вы также верны, чем следует обновлять x на каждом шаге. Я бы принял x как вход в getPos и ​​xdot в качестве вывода. Затем добавьте еще один шаг для обновления позиции.

+0

Как указано выше формула. Как обновить x и z. Обратите внимание, что x = [x1 x2] обозначается как положение и скорость – user8264

+0

Matlab очень легко обрабатывает векторы и матрицы, и по умолчанию он выполняет умножение матрицы. Буквально xdot = A * x + [0; 1] * w; z = [1, 0] * x + v; Для x просто x = x + xdot * dt; как только вы знаете xdot. Выбор подходящего dt. Информацию о матрицах Matlab см. Здесь [здесь] (http://uk.mathworks.com/help/matlab/math/creating-and-concatenating-matrices.html) и связанных с ней. – nivag

+0

@ Спасибо, сэр. Я обновляю текущее решение. Посмотрите, помогите мне результат реализации. Правильно ли это? Я использую фильтр Калмана, чтобы найти решение – user8264