clc % Очистить консоль
clear variables % Удалить переменные
close all force % Закрыть все всплывшие окна

s = tf('s'); % Обозначаем s как переменную Лапласа

K = 1;
T1 = 0.1;

K_var = [K*0.85 K K*1.15];
T1_var = [T1*0.85 T1 T1*1.15];
T2_var_5 = [T1_var(:)./2 - 0.1];
T2_var_6 = [T1_var(:)./2 + 0.1];

par_leg = [];% Переменная для легенды

figure % Автоматически строит отдельное окно для графика
for T_curr = T1_var
    % Импульсная и переходная характеристики системы
    
    W = K/(s); % Меняем для разных систем
    
    par_leg = [par_leg; sprintf('K = %0.5f, T = %0.5f',K,T_curr)];
    % Импульсная характеристика - реакция системы на мгновенный бесконечный
    % импульс (дельта-функция Дирака)
    subplot(2,1,1)% Разделяет фигуру (окно) на части

    [y_i,t_i] = impulse(W,10);

    plot(t_i,y_i,'LineWidth',2)% Построение графика по осям абсцисс и ординат
    grid on % Включить сеточку
    grid minor % Включить мелкую сеточку

    xlabel('Время, с') % подпись оси абсцисс
    ylabel('Значение') % подпись оси ординат
    title('Импульсная характеристика системы') % Подпись над графиком
    set(gca,'FontName','Times','FontSize', 24)

    legend(par_leg)%Подпись кривой на графике

    ylim([min(y_i)-0.5,max(y_i)+0.5])% Пределы графиков по оси y
    xlim([t_i(1),t_i(end)]) % Пределы графиков по оси x
    
    hold on % Возможность построить ещё график в том же окне
    % Переходная характеристика - реакция системы на единичное ступенчатое
    % воздействие (функция Хэвисайда)
    subplot(2,1,2)

    [y_s,t_s] = step(W,10);

    plot(t_s,y_s,'LineWidth',2)% Построение графика по осям абсцисс и ординат
    grid on % Включить сеточку
    grid minor % Включить мелкую сеточку

    xlabel('Время, с') % подпись оси абсцисс
    ylabel('Значение') % подпись оси ординат
    title('Переходная характеристика системы') % Подпись над графиком
    set(gca,'FontName','Times','FontSize', 24)

    legend(par_leg)%Подпись кривой на графике

    ylim([min(y_s)-0.5,max(y_s)+0.5])% Пределы графиков по оси y
    xlim([t_s(1),t_s(end)]) % Пределы графиков по оси x
    hold on % Возможность построить ещё график в том же окне
end

% Строим ЛАФЧХ
figure % Автоматически строит отдельное окно для графика
for K_curr = K_var
    % Импульсная и переходная характеристики системы
    
    W = K/(s); % Меняем для разных систем
    
    par_leg = [par_leg; sprintf('K = %0.5f, T = %0.5f',K_curr,T1)];
    % Импульсная характеристика - реакция системы на мгновенный бесконечный
    % импульс (дельта-функция Дирака)
    subplot(2,1,1)% Разделяет фигуру (окно) на части

    [mag,phase,wout] = bode(W);
    
    mag = squeeze(mag);
    phase = squeeze(phase);
    wout = squeeze(wout);

    semilogx(wout,20*log10(mag),'LineWidth',2)% Построение графика по осям абсцисс и ординат
    grid on % Включить сеточку
    grid minor % Включить мелкую сеточку

    xlabel('Частота, рад/с') % подпись оси абсцисс
    ylabel('Амплитуда, дБ') % подпись оси ординат
    title('Логарифмическая амплитудная характеристика системы') % Подпись над графиком
    set(gca,'FontName','Times','FontSize', 28)

    legend(par_leg)%Подпись кривой на графике

    ylim([min(20*log10(mag))-0.5,max(20*log10(mag))+0.5])% Пределы графиков по оси y
    xlim([wout(1),wout(end)]) % Пределы графиков по оси x
    
    hold on % Возможность построить ещё график в том же окне
    % Переходная характеристика - реакция системы на единичное ступенчатое
    % воздействие (функция Хэвисайда)
    subplot(2,1,2)

    semilogx(wout,phase,'LineWidth',2)% Построение графика по осям абсцисс и ординат
    grid on % Включить сеточку
    grid minor % Включить мелкую сеточку

    xlabel('Частота, рад/с') % подпись оси абсцисс
    ylabel('Фаза, град') % подпись оси ординат
    title('Логарифмическая фазовая характеристика системы') % Подпись над графиком
    set(gca,'FontName','Times','FontSize', 28)

    legend(par_leg)%Подпись кривой на графике

    ylim([min(phase)-0.5,max(phase)+0.5])% Пределы графиков по оси y
    xlim([wout(1),wout(end)]) % Пределы графиков по оси x
    hold on % Возможность построить ещё график в том же окне
end