0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Python]システム同定用入力信号の生成

Last updated at Posted at 2024-08-03

記事の内容

Pythonでシステム同定用入力信号の生成を行うサンプルスクリプト
作成する信号:ステップ入力、Chirp、白色ノイズ

参考情報

積分器を含む非線形システム同定のための離散値入力信号
機械学習によるディーゼルエンジン吸排気系の実時間MPC設計

サンプルスクリプト

qiita.rb
import numpy as np
import matplotlib.pyplot as plt

# 入力信号の生成(入力信号:ステップ入力)
duration = 1  # 信号の継続時間 (秒)
sampling_rate = 1000  # サンプリングレート (Hz)
t = np.linspace(0, duration, int(sampling_rate * duration), endpoint=False)
step_time = 0.1 #ステップ時刻
step_signal = np.zeros_like(t)
step_signal[int(step_time  * sampling_rate):] = 1
#グラフ表示
plt.figure(figsize=(20, 8))
plt.plot(t, step_signal, label="step_signal")
plt.xlabel("t (s)")
plt.ylabel("Signal [-]")
plt.title("Randam signal")
plt.legend()
plt.grid(True)
plt.show()

# Chirp信号の生成
frequency_start = 10  # チャープ信号の開始周波数 (Hz)
frequency_end = 100 # チャープ信号の終了周波数 (Hz)
chirp_signal = np.sin(2 * np.pi * np.cumsum(np.linspace(frequency_start, frequency_end, len(t)) / sampling_rate))
# グラフ表示
plt.figure(figsize=(20, 8))
plt.plot(t, chirp_signal, label="chrip_signal")
plt.xlabel("t (s)")
plt.ylabel("Signal [-]")
plt.title("Signal")
plt.legend()
plt.grid(True)
plt.show()

# 白色ノイズの生成
duration = 1  # 信号の継続時間 (秒)
sampling_rate = 1000  # サンプリングレート (Hz)
t = np.linspace(0, duration, int(sampling_rate * duration), endpoint=False)
A = 1.0    # 振幅
white_noise_signal = 2*A*(np.random.rand(round(sampling_rate*duration))-0.5)
#グラフ表示
plt.figure(figsize=(20, 8))
plt.plot(t, white_noise_signal, label="white_noise")
plt.xlabel("t (s)")
plt.ylabel("Signal [-]")
plt.title("Signal")
plt.legend()
plt.grid(True)
plt.show()

実行結果

出力例.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?