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'为仿真文件名,第二个参数为仿真时间

浙公网安备 33010602011771号