You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB求解分段函数ODE后绘制phi(t)周期跳转折线图方法咨询

解决方法

问题核心是ode45求解得到的phi是无界累加的,仅设置ylim仅裁剪显示范围,没有做值的周期折叠,也没有处理跳转处的多余连线,按以下步骤修改即可:

  • 对求解得到的phi序列做周期映射,将所有值折叠到[-π, π)区间
  • 在phi从π跳转到-π的位置插入NaN断开绘图连线,避免出现跳转处的多余斜线

修改后的完整代码如下:

gamma = 1.01;
[t,phi] = ode45(@(t,x)gamma-F(x,pi/6, 0.5), [0,100], -pi);

% 将phi值折叠到[-pi, pi)区间
phi_wrapped = mod(phi + pi, 2*pi) - pi;
% 识别跳变位置,插入NaN断开连线
jump_pos = find(abs(diff(phi_wrapped)) > pi);
% 倒序插入避免索引错乱
for k = length(jump_pos):-1:1
    idx = jump_pos(k);
    t = [t(1:idx); NaN; t(idx+1:end)];
    phi_wrapped = [phi_wrapped(1:idx); NaN; phi_wrapped(idx+1:end)];
end

figure();  
plot(t, phi_wrapped);
ylim([-pi, pi]);
yticks(-pi:pi:pi);
yticklabels((-1:1)+ "\pi");
grid on; grid minor

如果不需要严格消除跳转处的连线,仅保留周期折叠效果,可以省略插入NaN的步骤,直接绘制phi_wrapped即可。

内容的提问来源于stack exchange,提问作者Jane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:15:09