输入整形 matlab仿真

% 输入整形 仿真
wn = 30; % 无阻尼固有频率
b = 0.2; % 阻尼比
G1 = tf(wn*wn,[1 2*wn*b wn*wn]); % 原系统
step(G1)

wn = 32; % 模型失配参数
b = 0.2;
K = exp(-b*pi/(sqrt(1-b*b))); 
T = pi/((wn*sqrt(1-b*b))); % 峰值时间

Index = 15; % 脉冲时滞 时间因子
TN = 500; % 一个脉冲时滞 T 线条点数
TNm = Index*TN; % 线条总点数
Ts = linspace(0,Index*T,TNm)';

% ZV 两脉冲 脉冲时滞 t1 = 0; t2 = T;
A1 = 1/(1+K);
A2 = K/(1+K);

u1(1:TN,1) = A1; % 第一个脉冲
u1(TN+1:TNm,1) = A2+A1; % 第二个脉冲
y1 = lsim(G1,u1,Ts);
y2 = step(G1,Ts);
plot(Ts,u1,Ts,y2,Ts,y1);
title('阶跃响应');legend('ZV输入整形脉冲','未加输入整形','输入整形');
axis([0 1 0 1.6]);

% EI 脉冲时滞 t1 = 0; t2 = T; t3 = 2T;
Vexp = 0.1;
Ae1 = (1+Vexp)/4;
Ae2 = (1-Vexp)/2;
Ae3 = (1+Vexp)/4;
u2(1:TN,1) = Ae1;
u2(TN+1:2*TN,1) = Ae1 +Ae2;
u2(2*TN+1:TNm,1) = Ae1 +Ae2 + Ae3;
ye1 = lsim(G1,u2,Ts);
ye2 = step(G1,Ts);
plot(Ts,u2,Ts,ye2,Ts,ye1);
title('阶跃响应');legend('EI输入整形脉冲','未加输入整形','输入整形');
axis([0 1 0 1.6]);

在这里插入图片描述

在这里插入图片描述

% s曲线仿真
S_Trajdata = xlsread('PosRef_Traj.xlsx',1);
Fhz = 4000; % 采样频率
NN = length(S_Trajdata(:,1));
Ts = 0:1/Fhz:(NN-1)/Fhz;

% ZV 两脉冲 脉冲时滞 t1 = 0; t2 = T;
wn = 32; 
b = 0.2;
K = exp(-b*pi/(sqrt(1-b*b))); 
T = pi/((wn*sqrt(1-b*b))); % 峰值时间
A1 = 1/(1+K);
A2 = K/(1+K);
um = S_Trajdata(:,2); % 轨迹
u1(:,1) = A1*um; % 第一个脉冲
u2(:,1) = A2*um; % 第二个脉冲
u1(T*Fhz+1:NN,1) = u1(T*Fhz+1:NN,1)+ u2(1:NN-T*Fhz,1); % 延迟
figure;
y1 = lsim(G1,u1,Ts);
plot(Ts,um,Ts,u1);
legend('未加输入整形','输入整形');

在这里插入图片描述

输入整形原理 参考:邓辉. 基于输入整形技术的机器人柔性机械臂振动抑制研究[D]. 深圳大学, 2016.
PosRef_Traj.xlsx 文件链接:
链接:https://pan.baidu.com/s/1ypi26g0jtbhHI8EX2gB6UQ
提取码:w69e
关于输入整形更新了一篇文章:

【输入整形的matlab代码实现【新】输入整形新整理代码

  • 13
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值