Coder Social home page Coder Social logo

freqlinid's Introduction

MATLAB Утилита для анализа систем

Данная утилита на MATLAB предназначена для выполнения различных видов анализа динамических систем, включая анализ устойчивости, частотных характеристик, переходной и импульсной функций, корневого годографа, отклика на произвольный входной сигнал и маргиналов устойчивости.

Описание

Скрипт выполняет следующие виды анализа системы:

  • Анализ устойчивости
  • Анализ частотных характеристик (Bode диаграмма)
  • Анализ переходной функции
  • Анализ импульсной функции
  • Анализ корневого годографа
  • Анализ отклика на произвольный входной сигнал
  • Анализ маргиналов устойчивости

Установка

Скачайте или клонируйте репозиторий с утилитой. Убедитесь, что все необходимые файлы находятся в папке src. Добавьте пути к папке с классами и к текущей папке:

addpath('../src');
addpath('.');

Использование

Откройте MATLAB и перейдите в директорию с утилитой. Выполните скрипт, чтобы произвести анализ системы.

Пример использования:

% Очистка среды
clc; clear variables; close all;

% Параметры системы
params = struct( ...
    'b0', 1, 'b1', -1, 'b2', 0, ...
    'a0', 1, 'a1', 3, 'a2', 3, 'a3', 4);

numeratorCoeffs = [params.b2 params.b1 params.b0];
denominatorCoeffs = [params.a3 params.a2 params.a1 params.a0];
systemTransferFunction = tf(numeratorCoeffs, denominatorCoeffs);

% Анализ устойчивости
coefficients = [params.a3 params.a2 params.a1 params.a0];
analyzer = StabilityAnalyzer(coefficients);
analyzer.analyzeStability();

% Анализ частотных характеристик
bode_analysis;

% Анализ переходной функции
step_response;

% Анализ импульсной функции
impulse_response;

% Анализ корневого годографа
pzmap_analysis;

% Анализ отклика на произвольный входной сигнал
custom_input_response;

% Анализ маргиналов устойчивости
margin_analysis;

Описание Функций

  • StabilityAnalyzer Класс для анализа устойчивости системы. Принимает коэффициенты характеристического уравнения системы и выполняет анализ устойчивости.

  • bode_analysis (TODO) Функция для построения Bode диаграммы, используемой для анализа частотных характеристик системы.

  • step_response (TODO) Функция для анализа и визуализации переходной функции системы.

  • impulse_response (TODO) Функция для анализа отклика системы на импульсное воздействие.

  • pzmap_analysis (TODO) Функция для построения корневого годографа, отображающего нули и полюса системы.

  • custom_input_response (TODO) Функция для анализа отклика системы на произвольный входной сигнал.

  • margin_analysis (TODO) Функция для вычисления и отображения маргиналов устойчивости системы.

Общий вклад

Если вы хотите внести свой вклад в развитие утилиты, создайте fork репозитория, внесите необходимые изменения и создайте pull request. Также вы можете создавать issue для багов и предложений по улучшению.

Лицензия

Данный проект лицензирован под MIT License.

Контакты

Если у вас есть вопросы или предложения, вы можете связаться со мной по электронной почте: [email protected]

TODO:

  • StabilityAnalyzer не корректно обрабатывает маргинальную устойчивость (testMarginallyStableSystem)

freqlinid's People

Contributors

grroma avatar

Watchers

 avatar

freqlinid's Issues

Issue 3: Реализация анализа импульсной функции

Реализовать метод для анализа импульсной функции

Описание:

Необходимо разработать функцию impulse_response, которая будет выполнять анализ отклика системы на импульсное воздействие. Эта функция должна принимать объект передаточной функции системы и отображать график импульсного отклика.

Пример кода:

function impulse_response(systemTransferFunction)
    figure;
    impulse(systemTransferFunction);
    grid on;
    title('Impulse Response');
end

Шаги для реализации:

  • Создать функцию impulse_response.
  • Интегрировать функцию в основной скрипт.
  • Провести тестирование функции для проверки корректности работы.

Комментарий:

Будет полезно также добавить возможность сохранения результатов анализа в виде изображений и отчетов, что может пригодиться для дальнейшего использования и презентаций.

Issue 7: Исправить обработку маргинальной устойчивости в StabilityAnalyzer

Исправить обработку маргинальной устойчивости в StabilityAnalyzer

Описание:

На данный момент StabilityAnalyzer некорректно обрабатывает случаи маргинальной устойчивости. Необходимо исправить алгоритм анализа для корректного определения маргинально устойчивых систем.

Шаги для воспроизведения:

  1. Создать систему, находящуюся в состоянии маргинальной устойчивости (например, с корнями характеристического уравнения на мнимой оси).
  2. Использовать StabilityAnalyzer для анализа этой системы.
  3. Обратить внимание на неверные результаты анализа.

Пример системы с маргинальной устойчивостью:

params = struct( ...
    'b0', 1, 'b1', -1, 'b2', 0, ...
    'a0', 1, 'a1', 0, 'a2', 0, 'a3', 1); % Пример маргинально устойчивой системы

numeratorCoeffs = [params.b2 params.b1 params.b0];
denominatorCoeffs = [params.a3 params.a2 params.a1 params.a0];
systemTransferFunction = tf(numeratorCoeffs, denominatorCoeffs);

coefficients = [params.a3 params.a2 params.a1 params.a0];
analyzer = StabilityAnalyzer(coefficients);
analyzer.analyzeStability();

Ожидаемое поведение:

StabilityAnalyzer должен корректно определять, что система является маргинально устойчивой и предоставлять соответствующий анализ.

Шаги для реализации:

  1. Провести анализ текущей реализации StabilityAnalyzer и выявить причину некорректной обработки маргинальной устойчивости.
  2. Обновить алгоритм анализа для корректного определения маргинально устойчивых систем.
  3. Добавить тестовые примеры для проверки новых изменений и убедиться, что проблема решена.

Issue 5: Реализация анализа отклика на произвольный входной сигнал

Реализовать функцию для анализа отклика на произвольный входной сигнал

Описание:

Необходимо разработать функцию custom_input_response, позволяющую анализировать отклик системы на произвольный входной сигнал. Эта функция должна принимать объект передаточной функции системы и произвольный входной сигнал, затем отображать график отклика.

Пример кода:

function custom_input_response(systemTransferFunction, inputSignal)
    figure;
    lsim(systemTransferFunction, inputSignal, linspace(0, length(inputSignal)-1, length(inputSignal)));
    grid on;
    title('Response to Custom Input');
end

Шаги для реализации:

  • Создать функцию custom_input_response.
  • Интегрировать функцию в основной скрипт.
  • Провести тестирование функции для проверки корректности работы.

Комментарий:

Будет полезно также добавить возможность сохранения результатов анализа в виде изображений и отчетов, что может пригодиться для дальнейшего использования и презентаций.

Issue 4: Реализация анализа корневого годографа

Реализовать функцию для анализа корневого годографа

Описание:

Необходимо разработать функцию pzmap_analysis, которая будет строить корневой годограф, отображающий нули и полюса системы. Эта функция должна принимать объект передаточной функции системы и отображать график корневого годографа.

Пример кода:

function pzmap_analysis(systemTransferFunction)
    figure;
    pzmap(systemTransferFunction);
    grid on;
    title('Pole-Zero Map');
end

Шаги для реализации:

  • Создать функцию pzmap_analysis.
  • Интегрировать функцию в основной скрипт.
  • Провести тестирование функции для проверки корректности работы.

Комментарий:

Будет полезно также добавить возможность сохранения результатов анализа в виде изображений и отчетов, что может пригодиться для дальнейшего использования и презентаций.

Issue 6: Реализация анализа маргиналов устойчивости

Реализовать функцию для анализа маргиналов устойчивости

Описание:

Необходимо разработать функцию margin_analysis, которая будет вычислять и отображать маргиналы устойчивости (запасы устойчивости) системы. Эта функция должна принимать объект передаточной функции системы и отображать графики запаса по амплитуде и фазе.

Пример кода:

function margin_analysis(systemTransferFunction)
    figure;
    margin(systemTransferFunction);
    grid on;
    title('Stability Margins');
end

Шаги для реализации:

  • Создать функцию margin_analysis.
  • Интегрировать функцию в основной скрипт.
  • Провести тестирование функции для проверки корректности работы.

Комментарий:

Будет полезно также добавить возможность сохранения результатов анализа в виде изображений и отчетов, что может пригодиться для дальнейшего использования и презентаций.

Issue 1: Реализация анализа частотных характеристик

Реализовать функцию для анализа частотных характеристик (Bode диаграмма)

Описание:

Необходимо разработать функцию bode_analysis, которая будет строить Bode диаграммы для анализа частотных характеристик системы. Эта функция должна принимать объект передаточной функции системы в качестве аргумента и отображать график Bode.

Пример кода:

function bode_analysis(systemTransferFunction)
    figure;
    bode(systemTransferFunction);
    grid on;
    title('Bode Diagram');
end

Шаги для реализации:

  • Создать функцию bode_analysis.
  • Интегрировать функцию в основной скрипт.
  • Провести тестирование функции для проверки корректности работы.

Комментарий:

Будет полезно также добавить возможность сохранения результатов анализа в виде изображений и отчетов, что может пригодиться для дальнейшего использования и презентаций.

Issue 2: Реализация анализа переходной функции

Реализовать метод для анализа переходной функции

Описание:

Необходимо разработать функцию step_response, выполняющую анализ и визуализацию переходной функции системы. Эта функция должна принимать объект передаточной функции системы и отображать график переходной функции.

Пример кода:

function step_response(systemTransferFunction)
    figure;
    step(systemTransferFunction);
    grid on;
    title('Step Response');
end

Шаги для реализации:

  • Создать функцию step_response.
  • Интегрировать функцию в основной скрипт.
  • Провести тестирование функции для проверки корректности работы.

Комментарий:

Будет полезно также добавить возможность сохранения результатов анализа в виде изображений и отчетов, что может пригодиться для дальнейшего использования и презентаций.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.