关于#matlab#的问题:这个是skyhook半主动悬架的代码和结果图

img

img

img

img


这个是skyhook半主动悬架的代码和结果图,我照着书上敲的,为什么仿真的结果和书上的结果不一样呢,是哪一步有问题吗,请各位解惑

引用 皆我百晓生 小程序回复内容作答:
很抱歉,我没法看到图片上的内容,因此很难确定问题出在哪一步。但是,以下是一些可能导致不一致的常见问题和解决方案:

  1. 数据输入不准确:确保在仿真过程中提供的输入数据正确,并且和书上的一致。请检查输入的数据是否正确,例如,初始状态、外部激励等。

  2. 参数设置错误:确保您在代码中正确设置了所有的参数。检查模型中使用的变量和参数是否与书上的一样,包括阻尼、刚度等。

  3. 数值方法的选择:如果仿真使用了数值方法(如积分器),请确保您选择的方法和步长与书上的一样。这一步骤非常重要,因为数值方法的选择可能会对结果产生很大的影响。

  4. 代码逻辑错误:仔细检查代码,确保没有语法错误、循环错误或条件错误。一些细微的错误可能会导致结果与预期不同。

如果以上的解决方案都没有解决您的问题,建议您提供更具体的信息,包括代码和结果图示例,这样我们可以更好地帮助您找到问题所在。

你这个和书上面的不一样啊,这里多了一步:

img


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

结合GPT给出回答如下请题主参考
很难确定问题出在哪里,因为你没有提供更具体的信息。以下是一些可能导致结果不同的原因:

  1. 参数设置:仿真结果可能与书上的结果不同是因为你设置的参数不同。请确保您已正确设置了所有参数,例如质量、阻尼、刚度等。

  2. 外部扰动:如果您的模型包括外部扰动,例如路面不平坦度,则可能会导致结果不同。确保您在两个仿真中使用了相同的路面输入。

  3. 计算误差:可能是由于计算误差导致结果不同。检查一下您的代码是否正确,并确保您使用的数值方法和计算精度与书上的一致。

  4. 初始条件:可能是由于您设置的初始条件不同。检查一下您的初始条件是否正确,并确保在两个仿真中使用相同的初始条件。

希望以上信息对您有所帮助。如果您需要更具体的帮助,请提供更多信息,我会尽力回答的。

参考下代码:


# 导入必要的库
import numpy as np
import matplotlib.pyplot as plt

# 定义skyhook半主动悬架的参数
m = 250 # 车身质量,单位kg
k = 50000 # 车身弹簧刚度,单位N/m
c = 1000 # 车身阻尼系数,单位N·s/m
M = 40 # 轮胎质量,单位kg
K = 200000 # 轮胎弹簧刚度,单位N/m
C = 1000 # 轮胎阻尼系数,单位N·s/m
C_skyhook = 5000 # skyhook控制器增加的阻尼系数,单位N·s/m

# 定义道路输入函数
def road_input(t):
    # 道路输入为一个正弦波,幅值为0.05m,频率为1Hz
    return 0.05 * np.sin(2 * np.pi * t)

# 定义状态空间方程
def state_space(x, t):
    # x是状态变量向量,包括车身位移x1,车身速度x2,轮胎位移x3,轮胎速度x4
    # t是时间变量
    # dx是状态变量的导数向量
    dx = np.zeros(4)
    dx[0] = x[1] # dx1/dt = x2
    dx[1] = (-k * x[0] - c * x[1] + k * x[3] + c * x[4] + C_skyhook * (x[1] - x[4])) / m # dx2/dt = (-kx1 - cx2 + kx3 + cx4 + C_skyhook(x2 - x4)) / m
    dx[2] = x[3] # dx3/dt = x4
    dx[3] = (k * x[0] + c * x[1] - (K + k) * x[3] - (C + c) * x[4] - C_skyhook * (x[1] - x[4]) + K * road_input(t) + C * road_input(t)) / M # dx4/dt = (kx1 + cx2 - (K + k)x3 - (C + c)x4 - C_skyhook(x2 - x4) + Kf(t) + Cf'(t)) / M
    return dx

# 定义求解时间范围和初始条件
t = np.linspace(0, 10, 1000) # 时间从010秒,分成1000个点
x0 = np.array([0, 0, 0, 0]) # 初始状态都为0

# 使用odeint函数求解状态空间方程
from scipy.integrate import odeint
x = odeint(state_space, x0, t)

# 绘制车身位移和轮胎位移的图像
plt.figure(figsize=(10, 6))
plt.plot(t, x[:, 0], label='Body displacement')
plt.plot(t, x[:, 2], label='Wheel displacement')
plt.plot(t, road_input(t), label='Road input')
plt.xlabel('Time (s)')
plt.ylabel('Displacement (m)')
plt.title('Skyhook semi-active suspension system')
plt.legend()
plt.grid()
plt.show()

你的参数配置没对吧

可以参考下

matlab-汽车四分之一半主动悬架模糊控制_matlab悬架_studyer_domi的博客-CSDN博客 论述半主动悬架的工作原理,并对现有的半主动悬架汽车 1/4 动力学模型的搭建流程进。虽然主动悬架实现理想悬架的智能控制,但其构造相对复杂,耗能大,成本高。本章主要对悬架类型进行简要介绍,并对其进行对比分析,提出半主动悬架的优越性,阻尼或可调弹性元件刚度来替代主动悬架的力发生器。减振液,来完成阻尼的无级变更,这两种材料的共性是能满足汽车的工程需要,但在塑。造繁琐,成本高,现有的技术难以精确控制节流阀杆的运动,所以使其应用受到限制。综上所述,被动悬架的刚度和阻尼不可变,被动悬架难以适应不同路面不平度,来加。_matlab悬架 https://blog.csdn.net/qingfengxd1/article/details/129091889

是不是代码敲错了啊,注意下变量的名称哟没有写错。初学者最容易出现的问题,都是对照着敲会容易敲错了,建议一遍一遍的对照检查下。

看看你的代码才能确定~~~因为你是看着书上敲的所以可能存在误差

有几个可能的原因导致结果不一致:1. 参数设置不同:确保你使用了与书上相同的参数值,包括悬架系统的质量、刚度、阻尼等。2. 仿真环境不同:如果你使用的是不同的仿真软件或版本,可能会导致结果不一致。确保你使用了与书上相同的仿真环境。3. 仿真时间不同:确保你的仿真时间与书上的一致,以便进行比较。4. 初始条件不同:初始条件可能对仿真结果产生影响

检查一下数据输入的对不对

参考gpt

  1. 参数设置:请确保您在仿真代码中正确设置了所有的参数,包括车辆参数、悬架参数以及控制器参数。检查这些参数是否与书上的示例一致。

  2. 初始条件:检查您在仿真中设置的初始条件是否与书上的示例一致。这包括车辆的初始位置、速度、悬架的初始状态等。

  3. 控制策略:确保您正确实现了书上描述的skyhook半主动悬架控制策略。检查您的控制器代码,确保它与书上的示例一致。

  4. 仿真时间和步长:检查您的仿真时间和步长设置是否与书上的示例一致。如果仿真时间太短或步长太大,可能会导致结果与期望不符。

  5. 仿真模型:检查您的仿真模型是否与书上的示例一致。确保您正确地建立了车辆和悬架的动力学模型,并正确地集成了控制器。

如果您仔细检查了以上因素,并且仍然无法解决问题,可能需要更详细地检查您的代码和仿真设置。您可以逐步调试代码,输出中间结果以及关键变量的值,以便更好地理解问题所在。

检查一下代码路径和输入参数