ARCS6 AR6-REV.24062600
読み取り中…
検索中…
一致する文字列を見つけられません
HighPassFilter_Tmp.hh
1
9//
10// Copyright (C) 2011-2019 Yuki YOKOKURA
11// This program is free software;
12// you can redistribute it and/or modify it under the terms of the FreeBSD License.
13// For details, see the License.txt file.
14
15#ifndef HIGHPASSFILTER_TMP
16#define HIGHPASSFILTER_TMP
17
18#include <tuple>
19#include "Matrix.hh"
20#include "Discret.hh"
21#include "ARCSeventlog.hh"
22
23namespace ARCS { // ARCS名前空間
25 template <size_t N = 1>
27 public:
31 HighPassFilter(double CutFreq, double SmplTime)
32 : Ts(SmplTime), // [s] 制御周期の格納
33 g(CutFreq), // [rad/s] 遮断周波数
34 uZ1(0), yZ1(0), u(0), y(0),
35 gv(), uZ1v(), yZ1v(),uv(),yv()
36 {
37 PassedLog();
38 }
39
43 HighPassFilter(Matrix<1,N> CutFreq, double SmplTime)
44 : Ts(SmplTime), // [s] 制御周期の格納
45 g(), // [rad/s] 遮断周波数
46 uZ1(), yZ1(), u(), y(),
47 gv(CutFreq), uZ1v(0), yZ1v(0), uv(0),yv(0)
48 {
49 PassedLog();
50 }
51
54 double GetSignal(double u){
55 double y;
56 y=1.0/(g*Ts+2.0)*( 2.0*(u-uZ1) - yZ1*(g*Ts-2.0) );
57
58 uZ1=u;
59 yZ1=y;
60
61 return y;
62 }
63
67 Matrix<1,N> yv;
68 // ベクトルの数だけ回す, Matlabの配列仕様と合わせたため、ARCSのMatrix関数はi=1から格納される。
69 // i=0は-1 or NA になっているはず。そういう仕様。
70 for(size_t i = 1; i <= N; ++i){
71 yv[i]=1.0/(gv[i]*Ts+2.0)*( 2.0*(uv[i]-uZ1v[i]) - yZ1v[i]*(gv[i]*Ts-2.0) );
72
73 uZ1v[i]=uv[i];
74 yZ1v[i]=yv[i];
75 }
76 return yv;
77 }
78
81 : Ts(right.Ts), // [s] 制御周期の格納
82 g(right.g), // [rad/s] 遮断周波数
83 uZ1(right.uZ1), yZ1(right.yZ1),
84 gv(), uZ1v(), yZ1v(),uv(),yv()
85 {
86 PassedLog();
87 }
92
93 private:
94 HighPassFilter(const HighPassFilter&) = delete;
95 const HighPassFilter& operator=(const HighPassFilter&) = delete;
96
97 // 共通変数
98 double Ts;
99
100 // スカラー版の変数
101 double g;
102 double u=0;
103 double y=0;
104 double uZ1=0;
105 double yZ1=0;
106
107 // ベクトル版の変数
108 Matrix<1,N> gv;
109 Matrix<1,N> uZ1v;
110 Matrix<1,N> yZ1v;
111 Matrix<1,N> uv;
112 Matrix<1,N> yv;
113 };
114}
115
116#endif
ARCS イベントログクラス
#define PassedLog()
イベントログ用マクロ(ファイルと行番号のみ記録版)
Definition ARCSeventlog.hh:26
行列/ベクトル計算クラス(テンプレート版)
離散化クラス(テンプレート版) !!!注意喚起:このクラスは将来的に廃止予定です。代わりに、ArcsControlDiscretizeを使用して下さい。
高域通過濾波器クラス
Definition HighPassFilter_Tmp.hh:26
~HighPassFilter()
デストラクタ
Definition HighPassFilter_Tmp.hh:89
double GetSignal(double u)
HPF後の出力を取得する関数(スカラー版)
Definition HighPassFilter_Tmp.hh:54
Matrix< 1, N > GetSignal(Matrix< 1, N > uv)
HPF後の出力を取得する関数(ベクトル版) @paramre [in] uv 入力ベクトル
Definition HighPassFilter_Tmp.hh:66
HighPassFilter(double CutFreq, double SmplTime)
コンストラクタ(スカラー版)
Definition HighPassFilter_Tmp.hh:31
HighPassFilter(Matrix< 1, N > CutFreq, double SmplTime)
コンストラクタ(ベクトル版)
Definition HighPassFilter_Tmp.hh:43
HighPassFilter(HighPassFilter &&right)
ムーブコンストラクタ(スカラー版のみ)
Definition HighPassFilter_Tmp.hh:80
行列/ベクトル計算クラス(テンプレート版)
Definition Matrix.hh:44