我使用以下信号作为我已经制作的matlab代码的输入。我把它放在ode45函数文件中但是我得到的结果没有意义。我尝试使用固定步骤ode4求解器,结果是我期望的结果,但我不想使用固定步长求解器,因为我不相信它们能产生准确的结果。
t = linspace(0,100,10000);
Fmax = 10000;
ts1 = 1;
ts2 = 2;
ts3= 0;
ts4=2;
tt = ts1+ts2+ts3+ts4;
n = max(size(t));
Fn = zeros(1,n);
for i = 1:n
B = floor(t(i)/(tt));
if t(i) <= (B)*tt+ts1
Fn(i) =Fmax.*((t(i)-B*tt)/ts1);
elseif t(i) > (B)*tt+ts1 && t(i) <= (B)*tt+ts1+ts2
Fn(i) = Fmax;
elseif t(i) > (B)*tt+ts1+ts2 && t(i) <= (B)*tt+ts1+ts2+ts3
Fn(i) = -Fmax.*(t(i)-(ts2+ts1)-B*tt)/abs(ts3-ts2)+Fmax;
elseif t(i) > (B)*tt+ts1+ts2+ts3 && t(i) < (B)*tt+ts1+ts2+ts3+ts4
Fn(i) = 0;
end
end
plot(t,Fn)
当然,在ode功能中我已经取出了&#39;&#39;&#39;&#39;&#39;部分和我。感谢