# coding: utf-8 import numpy as np from scipy import signal import matplotlib.pyplot as plt np.set_printoptions(suppress=True) # 小数点表示 # 時系列のサンプルデータ作成 n = 256 # データ数 dt = 0.01 # サンプリング間隔 f = 1 # 周波数 fn = 1/(2*dt) # ナイキスト周波数 t = np.linspace(1, n, n)*dt-dt # 時間 ia = np.sin(2*np.pi*f*t) # sin波、位相を2*pi/3ずつずらす ib = np.sin(2*np.pi*f*t - 2*np.pi/3) ic = np.sin(2*np.pi*f*t - 4*np.pi/3) iabc = np.array([ia, ib, ic]) iabc.shape plt.figure() plt.plot(t, iabc[0, :], "b") plt.plot(t, iabc[1, :], "g") plt.plot(t, iabc[2, :], "r") plt.xlim(0, 2) # クラーク変換(三相交流 -> 二相交流) crack_abs = np.sqrt(2/3) * np.array([[1, -1/2, -1/2],[0, np.sqrt(3)/2 , -np.sqrt(3)/2 ]]) # 絶対変換 crack_rel = 2/3 * np.array([[1, -1/2, -1/2],[0, np.sqrt(3)/2 , -np.sqrt(3)/2 ]]) # 相対変換 iab = np.dot(crack_abs, iabc) plt.figure() plt.plot(t, iab[0, :], "b") plt.plot(t, iab[1, :], "g") plt.xlim(0, 2) park_abs = np.array([[np.cos(2*np.pi*f*t), np.sin(2*np.pi*f*t)],[-np.sin(2*np.pi*f*t), np.cos(2*np.pi*f*t)]]) # 絶対変換 park_abs[:,:,2] np.dot(park_abs[:,:,1], iab[:,1]) iab = np.dot(iabc, crack_rel_T) park = np.array([[np.cos(theta), np.sin(theta)],[-np.sin(theta), np.cos(theta)]]) idq = np.empty([2000,2]) for i in range(2000): idq[i,:] = np.dot(park[:,:,i], iab[i,:])