大家好,又见面了,我是你们的朋友全栈君。
简单实例:用matlab画分段函数
当x<0时 y=5*sin(x);
当x>=0且x<=5时 y=x^2;
当x>5时 y=(8-x)^2+16.
x=-5:0.001:10;
y=5*sin(x).*(x<0)+x.^2.*(x>=0 & x<=5)+((8-x).^2+16).*(x>5);
plot(x,y);
grid on;
应用:加减速仿真曲线绘制
T形速度曲线变位过程
A=500000;V=100000;Tacc=0.2;Vs=0;S0=50000;S=200000;Td=0.5;Tdd=0.6;Tddd=0.7;Tdddd=1.05;Ted=1.25;
t=0:0.0001:Ted;
Vt=(Vs+A*t).*(t>=0 & t<Tacc)...
+V.*(t>=Tacc & t<Td)...
+(V-A*(t-Td)).*(t>=Td & t<Tdd)...
+((V-A*(Tdd-Td))+A*(t-Tdd)).*(t>=Tdd & t<Tddd)...
+V.*(t>=Tddd & t<Tdddd)...
+(V-A*(t-Tdddd)).*(t>=Tdddd & t<=Ted);
plot(t*1000,Vt/1000);
axis([0 1.4*1000 0 120000/1000])
title('T形曲线变位过程');
xlabel('时间(ms)');
ylabel('速度(KHz)');
grid on;
S形速度曲线变速过程
Vs=0;Ve=0;V=200000;Tacc=0.3;Tdec=0.3;Ts=0.15;Ts2=0.08;Ts3=0.07;Ts4=0.12;CV1=100000;CV2=160000;
T1=0.5;T2=T1+Ts2;T3=T2+Ts2;T4=T3+0.2;T5=T4+Ts3;T6=T5+Ts3;T7=T6+0.2;T8=T7+Ts4;Ted=T8+Ts4;%Ted=1.44;
t=0:0.0001:Ted;
J=V/(Tacc-Ts)/Ts;A=V/(Tacc-Ts);J2=(V-CV1)/Ts2/Ts2;A2=(V-CV1)/Ts2;J3=(CV2-CV1)/Ts3/Ts3;A3=(CV2-CV1)/Ts3;J4=CV2/Ts4/Ts4;A4=CV2/Ts4;
V1=J*Ts.^2/2;V2=V;V3=V;V4=V-J2*Ts2.^2/2;V5=CV1;V6=CV1;V7=CV1+J3*Ts3.^2/2;V8=CV2;V9=CV2;V10=V9-J4*Ts4.^2/2;
Vt=(Vs+J*t.^2/2).*(t>=0 & t<Ts)...
+(V1+A*(t-Ts)-J*(t-Ts).^2/2).*(t>=Ts & t<Tacc)...
+V2.*(t>=Tacc & t<T1)...
+(V3-J2*(t-T1).^2/2).*(t>=T1 & t<T2)...
+(V4-A2*(t-T2)+J2*(t-T2).^2/2).*(t>=T2 & t<T3)...
+V5.*(t>=T3 & t<T4)...
+(V6+J3*(t-T4).^2/2).*(t>=T4 & t<T5)...
+(V7+A3*(t-T5)-J3*(t-T5).^2/2).*(t>=T5 & t<T6)...
+V8.*(t>=T6 & t<T7)...
+(V9-J4*(t-T7).^2/2).*(t>=T7 & t<T8)...
+(V10-A4*(t-T8)+J4*(t-T8).^2/2).*(t>=T8 & t<Ted);
figure(2);
plot(t*1000,Vt/1000);
axis([0 1.6*1000 0 220000/1000]);
title('S形曲线调速过程');
xlabel('时间(ms)');
ylabel('速度(KHz)');
grid on;
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134071.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...