Главная страница
Навигация по странице:

  • (ФГБОУ ВО «СамГТУ»)

  • «Фильтр Калмана в задаче обработки экспериментальных данных». Лабораторная работа 6 Фильтр Калмана в задаче обработки экспериментальных данных Вариант 5 Балашов И. В. Кутуков Л. А


    Скачать 149.09 Kb.
    НазваниеЛабораторная работа 6 Фильтр Калмана в задаче обработки экспериментальных данных Вариант 5 Балашов И. В. Кутуков Л. А
    Анкор«Фильтр Калмана в задаче обработки экспериментальных данных
    Дата17.05.2023
    Размер149.09 Kb.
    Формат файлаdocx
    Имя файла3-IAIT-1_Balashov_Kutukov_Shishkanov_6_1.docx
    ТипЛабораторная работа
    #1136781



    Министерство науки и высшего образования Российской Федерации

    федеральное государственное бюджетное образовательное учреждение

    высшего образования

    «Самарский государственный технический университет»

    (ФГБОУ ВО «СамГТУ»)


    Лабораторная работа №6

    «Фильтр Калмана в задаче обработки экспериментальных данных»

    Вариант 5

    Выполнил:

    Балашов И. В.

    Кутуков Л. А.

    Шишканов В. Б.

    Проверил:

    Узенгер А. А.


    Самара 2022

    Цель работы: познакомиться с математическим методом фильтрации экспериментальных данных – фильтром Калмана. Научиться использовать фильтр Калмана в задаче обработки экспериментальных данных.

    1. Ознакомиться с работой функции kalm() в Scilab.

    2. Разобраться с вышеприведенным примером.

    3. Подключить набор экспериментальных данных и выполнить настройку параметров модели фильтра Калмана, наилучшим образом характеризующие экспериментальные данные.

    Эксперимент 1: объект 2-го порядка

    clear;
    // Параметры для рассчета

    file1 = 'F:\3-1\Эксперименты\6\data_5.bin';

    N = 10000;

    ts = 0.01;

    n = 1:N;
    // Открытие файла

    fd1 = mopen(file1,'rb');

    y = mget(N, 's', fd1) - 18230;

    mclose(fd1);
    // System

    a = [0.7; 0.2; 1]; b = [1; 0.2];

    A = [0 1; -a(1)/a(3) -a(2)/a(3)];

    B = [0; 1];

    C = [b(1) b(2)];

    I = eye();

    //

    F = I + A*ts + (A*ts)^2/2 + (A*ts)^3/3;

    G = (I*ts + A*ts*ts/2 + (A*ts)^2*ts/3)*B;

    H = C;

    //

    R = 0; Q = 2.4;
    // Initialize for loop

    p0 = [0.1 0.1; 0.1 0.1];

    x0 = zeros(2,1);

    x1 = x0;

    p1 = p0;
    // Kalman filter

    for i = 1:N-1

    [x1(:,i+1),p1,x,p]=kalm(y(:,i),x1(:,i),p1,F,G,H,Q,R);

    end
    clf;

    //subplot(2,1,2);

    plot(n, y(1,:),"m");

    plot(n, x1(1,:),"k");



    Эксперимент 2:

    clear;
    // Параметры для рассчета

    file1 = 'F:\3-1\Эксперименты\6\data_5.bin';

    N = 10000;

    ts = 0.01;

    n = 1:N;
    // Открытие файла

    fd1 = mopen(file1,'rb');

    y = mget(N, 's', fd1) - 18230;

    mclose(fd1);
    // System

    a = [0; 0.5; 0.5]; b = [0.9; 0.2];

    A = [0 1; -a(1)/a(3) -a(2)/a(3)];

    B = [0; 1];

    C = [b(1) b(2)];

    I = eye();

    //

    F = I + A*ts + (A*ts)^2/2 + (A*ts)^3/3;

    G = (I*ts + A*ts*ts/2 + (A*ts)^2*ts/3)*B;

    H = C;

    //

    R = 0.1; Q = 6.4;
    // Initialize for loop

    p0 = [0.1 0.1; 0.1 0.1];

    x0 = zeros(2,1);

    x1 = x0;

    p1 = p0;
    // Kalman filter

    for i = 1:N-1

    [x1(:,i+1),p1,x,p]=kalm(y(:,i),x1(:,i),p1,F,G,H,Q,R);

    end
    clf;

    //subplot(2,1,2);

    plot(n, y(1,:),"m");

    plot(n, x1(1,:),"k");



    Вывод: познакомились с математическим методом фильтрации экспериментальных данных – фильтром Калмана и научились использовать фильтр Калмана в задаче обработки экспериментальных данных.


    написать администратору сайта