matlab双层网络级联失效代码

#双层网络
#级联失效
#matlab
如何使用matlab编写双层网络级联失效的代码

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/263215
  • 这篇博客也不错, 你可以看下matlab差分迭代解决静电场边界问题(含第二类边界条件)
  • 除此之外, 这篇博客: 【matlab】单摆鲁棒滑模控制matlab实现从简到繁中的 整体代码 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • % 单摆滑模控制测试仿真
    %根据现代鲁棒控制桑豪ppt
    % Jun 24 2020 Wed  Jonny Su
    clc;
    close all;
    clear all;
    cd ('D:\OneDrive - 徐州开放大学\NPU\program\Morphing\Robust');
    %% 单摆相关参数
    theta = -1.00;                                                           %   攻角deg   x1
    omegaz =  2.00;                                                          %   俯仰角速度,deg/s   x2
    del_theta = 0.00;                                                           %   攻角微分deg   
    del_omegaz =  0.00;                                                          %   俯仰角速度微分,deg/s
    g = 9.78;                                                                   %重力加速度
    J = 1.2;                                                                   %   转动惯量kg/m^2
    L = 1.74;                                                                     %   摆长m
    V_s = 0.18;                                                                     %   摩擦系数m/s^2
    
    %% 控制参数
    
    %   滑模面
    c = 0.3;
    ep = 0.5;
    u = 0;
    
    %   终端滑模面&非奇异终端滑模面 
    % alpha = 0,9;      %什么神仙bug
    alpha = 0.9;
    p = 9;
    q = 7;
    
    %   快速终端滑模面
    k1 = 1.1;
    k2 = 0.9;
    a1 = 9/7;
    a2 = 7/9;
    
    %   非奇异快速终端滑模面
    k3 = 1.1;
    k4 = 0.9;
    a3 = 3;
    a4 = 9/7;
    beta = q/p;  %两个奇数
    
    %% Simulation parameters
    
    step = 0.01;               %步长
    t = 0;                      %时间
    n = 1;                      %步数
    
    %% 二阶系统仿真
    
    while (t < 50)              %仿真时间50s
        %二阶系统非线性微分方程
        del_theta = omegaz;
        del_omegaz = - 0.5 *g * sin(theta) / L - V_s * omegaz / J + u / J;
        f = - 0.5 *g * sin(theta) / L - V_s * omegaz / J;
        %% 控制器设计
    
        %滑模控制
        method = '滑模控制';
        s = del_theta + c * theta;                                                              %   滑模面
        u = - ep * sign(s) - f - c * omegaz;        %滑模控制基于趋近律
    %     u = - f - c * omegaz;        %滑模控制基于等效控制原理
    
        %终端滑模控制
    %     method = '终端滑模控制';
    %     s = omegaz + alpha * theta^(q/p);                                                              %   终端滑模面
    %     u = - ep * sign(s)- f - alpha * beta * abs(theta)^(beta - 1) * omegaz;        %终端滑模控制基于趋近律
    %     u = - f - alpha * beta * abs(theta)^(beta - 1) * omegaz;        %终端滑模控制基于等效控制原理
    
        %快速终端滑模控制
    %     method = '快速终端滑模控制';
    %     s = omegaz + k1 * theta^(a1) + k2 * theta^(a2);                                                              %   快速终端滑模面
    %     u = - f - k1 * a1 * abs(theta)^(a1 - 1) * omegaz - k2 * a2 * abs(theta)^(a2 - 1) * omegaz;        %快速终端滑模控制基于等效控制原理
    
        %非奇异终端滑模控制
    %     method = '非奇异终端滑模控制';
    %     s = theta + alpha * omegaz^(p/q);                                                              %   非奇异终端滑模面
    %     u = - f - q/(alpha * p) * omegaz ^ (2-p/q);        %非奇异终端滑模控制基于等效控制原理
    
        %非奇异快速终端滑模控制
    %     method = '非奇异快速终端滑模控制';
    %     s = theta + k3 * sign(theta)^(a3) + k4 * sign(omegaz)^(a4);                                                              %   非奇异快速终端滑模面
    %     u = (- omegaz - k3 * a3 * abs(theta)^(a3 - 1) * omegaz)/(k4 * a4 * abs(omegaz)^(a4 - 1))- f ;        %非奇异快速终端滑模控制基于等效控制原理
    
    %% 状态更新 
        states_old = [theta;omegaz];      %弹道倾角 俯仰角速度
        del = [del_theta;del_omegaz];                 %微分量
        states_new = states_old + del * step;           %更新 赋值
        theta = states_new(1);
        omegaz = states_new(2);
        %   保存数据
        Vehicle_states(n,:) = [theta;omegaz]; %
        Del_states(n,:) = [del_theta;del_omegaz];         %
        Time(n) = t;   %时间记录
        Control_states(n,:) =  [u];            %控制变量
        %  时间更新
        t = t + step;  %仿真步长
        n = n + 1;  %计数+1
    end
    
    
    %% 绘图检验
    figure;
    % 速度
    plot(Time,Vehicle_states(:,1),Time,Vehicle_states(:,2),'linewidth',1.5);
    %axis([0 100 1400 1600]) ;
    legend('$\theta(^\circ)$','$\omega_z(^\circ/s)$','FontName','Times New Roman','FontSize',14,'Interpreter','latex')
    grid on;
    title(['控制方法为 ',method,' 时的响应曲线']);
    xlabel('$T(s)$','FontName','Times New Roman','FontSize',14,'Interpreter','latex');
    % ylabel('$\theta(^\circ)$','FontName','Times New Roman','FontSize',14,'Interpreter','latex');
    % set(gca,'FontName','Times New Roman','FontSize',14,'linewidth',1.5);
    
    figure;
    plot(Time,Control_states(:,1),'linewidth',1.5);
    %axis([0 100 18500 21500]) ;
    grid on;
    title(['控制方法为 ',method,' 时的输入信号']);
    xlabel('$T(s)$','FontName','Times New Roman','FontSize',14,'Interpreter','latex');
    ylabel('$input$','FontName','Times New Roman','FontSize',14,'Interpreter','latex');
    % set(gca,'FontName','Times New Roman','FontSize',14,'linewidth',1.5);
    

    以上就是单摆鲁棒滑模控制matlab实现的全部内容,欢迎讨论交流。