Matlab-在控制理论中的应用

白噪声生成

function [sig] = whitenoise(sigma, len)     %sigma为均方差,len为序列长度
    sig = zeros(1, len);
    x = zeros(1, 12*len+1);
    r = zeros(1, 12*len+1);
    a = 65539;
    M = 2147483647;
    b = 0;
    x(1) = 12345;
    r(1) = x(1) / M;
    for i = 1 : 12*len
        x(i+1) = mod(a * x(i) + b, M);
        r(i+1) = x(i+1)/M;
    end
    n = 12;
    for i = 1:len
        for j = 1:n
            sig(i) = sig(i) + r(n * (i - 1) + j);
        end
    end
    sig = (sig - 12*0.5) * sigma;
end

也可通过内置函数randn()直接生成

M序列生成

function [M] = M_que(Np, a)
    % 生成M序列
    M = [1, 0, 0, 0, 0, 0, 1];
    u = zeros(1, Np);
    for i = 1:Np
        u(i) = M(7);
        temp = xor(M(6), M(7));
        M(2:7) = M(1:6);
        M(1) = temp;
        u(i) = (1 - 2*u(i)) * a;
    end
    M = u;
end

反馈系数可通过如下表格确定

阶跃响应

% 阶跃响应函数
function [c, t] = step_res(omega, zeta)
    num = [0 0 omega^2];
    den = [1 2*omega*zeta omega^2];
    sys = tf(num, den);
    [c, t] = step(sys, (0:0.05:20));
end

脉冲响应

% 脉冲响应函数
function [c, t] = impulse_res(omega, zeta)
    num = [0 0 omega^2];
    den = [1 2*omega*zeta omega^2];
    sys = tf(num, den);
    [c, t] = impulse(sys, (0:0.05:20));
end

配合simulink

options=simset('SrcWorkspace','current');	% 设置仿真参数
sim('pid', (0:0.01:80), options);	% 第一个参数'pid'为仿真文件名,第二个参数为仿真时间
posted @ 2021-10-28 09:36  SergeyuiL  阅读(219)  评论(0)    收藏  举报