TL;DR我想从theta_2
找到下面系统中的theta_1
,而不知道其他参数。你知道吗
在this question之后,我对下面的系统进行了建模
使用Modelica语言并通过OpenModelica生成CSV文件解决:
"time", "theta1", "theta2"
0, 0, 0
0.02, -6.40192, -7.79226
0.04, -12.8038, -12.1422
0.06, -19.2058, -18.1304
0.08, -25.6077, -26.7809
您可以找到Modelica代码和CSVhere in this GitHub Gist。我想做的是过滤theta_2
得到theta_1
,而不知道tau
和theta_1
、兼容元素k
和角惯性J
的采样率。我推测旋转弹簧会在角度数据的频域频谱中留下一个可分辨的足迹theta_2
。你知道吗
到目前为止我所做的:
import pandas as pd
df = pd.read_csv("exportedVariables.csv")
df.head()
import matplotlib.pyplot as plt
plt.plot(df["time"], df["theta2"], df["time"], df["theta1"])
plt.xlabel("Time (sec)")
plt.ylabel("Angle (deg)")
theta_2
数据的快速傅里叶变换(FFT):import numpy as np
from scipy.fftpack import fft
theta2_scipy_fft = fft(df["theta2"])
N = len(df.index)
time = df["time"].values
dt = np.mean(np.diff(time))
frequency = np.linspace(0.0, 1.0 / (2.0 * dt), N // 2)
plt.plot(frequency, 2.0 / N * np.abs(theta2_scipy_fft[0: N // 2]))
plt.xscale("log")
plt.xlabel("Frequency (Hz)")
plt.ylabel("Amplitude (dB)")
然而,我在这里看到的是,光谱图中的前两个主要振幅实际上是采样率,通过采样率生成tau
和omega_1
的随机值,我找不到我要找的那一个。所以我不知道如何从这里开始。如果您能帮助我知道是否有可能在不知道系统和如何实现的情况下过滤掉由旋转弹簧引起的干扰,我将不胜感激。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐