学校の課題で矩形波をPythonで書かなければならないのですが、わかりません。
発生している問題・エラーメッセージ
・f(t) = 5 (0.4 < t < 0.6)
・f(t) = 0 (それ以外)
の矩形波の書き方が分からないです。どなたかご教授頂きたいです。
書きあがった矩形波をフーリエ変換するというのが課題内容です。
The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
該当のソースコード
python
1 2import numpy as np # NumPy 3from scipy import signal # Sci+Py 4import matplotlib.pyplot as plt # Matplotlib 5 6# データのパラメータ 7N = 100 # サンプル数 8SF = 100.0 # サンプリング周波数 9DT = 1.0 / SF # サンプリング間隔 10fn = 1/(2*DT) # ナイキスト周波数 11t = np.arange(0, N*DT, DT) # 時間軸 12freq = np.linspace(0, 1.0/DT, N) # 周波数軸 13 14# フィルタのパラメータ 15gpass = 1 # 通過域最大損失量[dB] 16gstop = 40 # 阻止域最小減衰量[dB] 17 18# 短形波fを生成 19f = 0 20for i in range(len(t)): 21 if 0.4 < t < 0.6: 22 f = 5 23 else : 24 f = 0 25 26# 高速フーリエ変換(周波数成分) 27F = np.fft.fft(f) 28 29# =============================================== 30# グラフ表示 31# =============================================== 32fig = plt.figure(figsize = (12.0, 10.0)) 33plt.subplots_adjust(wspace=0.4, hspace=0.6) 34 35# 信号fを表示 36plt.subplot(222) 37plt.plot(t, f) 38plt.xlabel("Time [s]") 39plt.ylabel("Signal") 40plt.grid() 41 42# 信号fの周波数成分 43plt.subplot(223) 44plt.plot(freq, np.abs(F/(N/2)), marker="s", linewidth="0") 45plt.xlabel('Frequency [Hz]') 46plt.ylabel('Amplitude') 47plt.xlim(0, int(SF/2.0)/2.0) 48plt.grid()
試したこと
矩形波 f について定義し、for , if を使ってf(t) = 0、f(t) = 5になる条件を入力してみたのですが、エラーが表示されてしまいました。条件の入力の仕方が間違えていると思っています。
f をリストにして行ってみましたが、同じエラーが出てきました。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/19 06:03