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

Matlab中如何基于现有变量绘图?需补充代码实现目标波形

双自由度系统位移波形绘图实现方案

你需要添加数值迭代计算逻辑和绘图代码来实现目标波形,以下是完整的可运行代码(包含你已定义的初始变量):

clear;
clc;

F = 1;
M1 = 1;
M2 = 1.5;
B = 0.1;
K1 = 0.2;
K2 = 0.15;
C1 = [B/M1 - B/M2, B/M2];
C2 = [(K1+K2)/M1, -K1/M1; -K2/M2, K2/M2];
Y = [0.1; 0.1];
dY = [0; 0];
t = 0;
dt = 0.1;

% 设置总模拟时长,可根据需求调整
T_total = 100;
% 初始化数组存储时间、位移数据
t_history = t;
Y_history = Y';

% 循环迭代计算系统响应
while t < T_total
    % 计算加速度:基于双自由度系统运动方程
    ddY = -C1*dY - C2*Y + [F/M1; 0];
    % 欧拉法更新速度和位移
    dY = dY + ddY * dt;
    Y = Y + dY * dt;
    t = t + dt;
    % 保存当前时刻的数据
    t_history = [t_history, t];
    Y_history = [Y_history, Y'];
end

% 绘制位移波形
figure;
plot(t_history, Y_history(1,:), 'b-', 'LineWidth', 1.5);
hold on;
plot(t_history, Y_history(2,:), 'r-', 'LineWidth', 1.5);
xlabel('时间 t (s)');
ylabel('位移');
legend('M1 位移', 'M2 位移');
title('双自由度系统位移响应');
grid on;

关键部分说明:

  • 数值迭代:采用欧拉法求解微分方程,计算每个时间步的加速度、速度和位移,这是得到连续波形的核心
  • 数据存储:用数组保存每一步的时间和位移值,避免循环中实时绘图导致的性能问题
  • 绘图配置:用不同颜色区分两个质量块的位移曲线,添加坐标轴标签、图例和网格,和目标波形的展示形式一致

如果需要更高精度的计算,可以将欧拉法替换为Matlab内置的ode45函数,但上述代码已能生成类似你目标图的阻尼振动波形。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:40:34