1. 測定情報
2. 測定結果(時刻歴)の貼付
3. 前処理
4. 解析条件
解析結果
解析未実行です。
解析未実行です。
建築物の常時微動(または人力加振・地震観測)測定で得られた加速度・速度・変位の時刻歴から、 固有振動数・減衰定数・モード形状を同定するアプリです。外力(入力)が未知のまま応答のみから 同定するため 実稼働モード解析(OMA: Operational Modal Analysis)、あるいは 出力のみ同定(output-only identification) と呼ばれます。
同定手法は周波数領域の FDD / EFDD / FSDD と時間領域の SSI-cov です。 各処理の内容は下記の解説に、実際に用いた条件と中間結果は「詳細計算ログ」に示しています。
動作を確認したい場合は、ツールバーの「サンプル読込」で 既知の固有振動数・減衰定数を持つ合成データを読み込めます。 解析結果がその真値に一致するかで、解析ロジックの妥当性を確認できます。
解析は次の順序で実行されます。
| 段階 | 処理 |
|---|---|
| ① | 前処理: トレンド除去 → 帯域フィルタ → 間引き |
| ② | クロススペクトル密度行列 Syy(f) の推定 |
| ③ | 各周波数で特異値分解 → CMIF |
| ④ | 卓越振動数(対象モード)の選択(自動検出+グラフのクリックで修正) |
| ⑤ | FDD: ピークピッキングで fn とモード形状 |
| ⑥ | EFDD/FSDD: SDOF ベル → 自己相関 → 対数減衰率で ξ |
| ⑦ | SSI: Hankel 行列の構成 |
| ⑧ | SSI: 特異値分解 → 可観測行列 → 状態空間行列 A, C |
| ⑨ | SSI: 次数を増やしながら固有値解析(+ Hard Criteria) |
| ⑩ | Hard Criteria(MPC / MPD)と Soft Criteria(安定極判定) |
| ⑪ | SSI: 安定極から対象モードを抽出 |
| ⑫ | データ診断図(自己相関・PSD・確率密度・正規確率・STFT)、合成スペクトル |
| ⑬ | モード品質指標(MAC / MPC / MPD / MCF)の算出と手法間比較 |
| ⑭ | (地動 ch がある場合)入出力同定: FRF の H1 推定 → 極の推定(LSCF / LSCE / RFP)→ 安定化判定 → 極の選択 → LSFD → 刺激関数 βφ |
定常白色雑音で加振された線形系の出力クロススペクトル密度行列 Syy(f) は、共振点近傍で そのモードのモード形状 φ による 1 階数(rank-1)行列に近づきます。したがって Syy(f) を 特異値分解すると、共振点では第 1 特異値が卓越し、第 1 特異ベクトルがモード形状に比例します。
[Brincker, Zhang & Andersen (2001), Smart Mater. Struct. 10(3)]
本アプリでは選択振動数 fsel ± DF1 の帯域で 第 1 特異値 / 第 2 特異値の比が最大となるビンをピークとして採用します。 この比が大きい点は「1 つのモードだけが卓越している点」であり、モード形状の推定精度が最も高くなります。
FDD は減衰定数を算出しません。減衰が必要な場合は EFDD/FSDD または SSI を使用してください。
FDD で得たモード形状 φ を使い、そのモードだけを含む1 自由度系スペクトル(SDOF ベル)を切り出します。 FSDD ではモード形状で空間的に濾波した拡張 PSD を、EFDD では第 csm 特異値そのものを用います。 どちらも MAC(φ, ucsm(f)) > MAClim を満たす周波数ビンのみを採用することで、 他モードの混入を防ぎます。
[Zhang, Wang & Tamura (2010) MSSP 24(5) = FSDD / Brincker, Ventura & Andersen (2001) IMAC XIX = EFDD]
この SDOF ベルを逆 Fourier 変換すると自由振動波形に相当する自己相関関数が得られます。 その極値(正負の山)の減衰から対数減衰率を求め、減衰定数に換算します。
[極値は先頭 sppk 個を読み飛ばし np_max 個を採用する]
※ 先頭の極値を読み飛ばす(sppk)のは、逆変換直後の区間には窓関数やゼロ詰めの影響が残るためです。 採用する極値の個数(np_max)を増やすと平均化されて安定しますが、後半は振幅が小さく雑音に埋もれるため、 自己相関のグラフを見て適切な範囲を選んでください。
時間領域で状態空間モデルを同定する手法です。出力データから Hankel 行列(将来出力と過去出力の 相互共分散)を作り、その特異値分解から可観測行列 O を取り出します。
可観測行列は O = [C, CA, CA², …, CAᵖ]ᵀ というシフト構造を持つため、 上下にずらした部分行列から状態行列 A を最小二乗で求められます。
[Van Overschee & De Moor (1996)。高速実装は Döhler & Mevel (2013) MSSP 38(2)]
実際のモデル次数は未知なので、次数 n を ord_min から ord_max まで変えて同定を繰り返します。 真の構造モードは次数を変えても同じ位置に現れますが、数学的・雑音由来の偽の極は次数ごとに移動します。 この性質を可視化したものが安定化線図です。
同定された極から物理的に意味のあるものを選別するため、2 段階の基準を適用します。
次数 n の各極について、次数 n−1 の中で振動数が最も近い極と比較し、3 条件すべてを満たせば「安定極」とします。
[Reynders, Houbrechts & De Roeck (2012) MSSP 29]
地表・基礎で測った地動 üg を入力、各階の応答を出力として、両者の比である 周波数応答関数(FRF)を直接求めます。出力のみの同定と違い入力スペクトルの白色性を仮定しないため、 地震観測記録などにも適用でき、さらにモードごとの刺激関数 βφ(刺激係数 × モード形状)が得られます。
① FRF の推定(H1) — Welch 法のクロススペクトル G から、入力が複数(X・Y の地動など)の場合も含めて
床の加速度計は地動を含む絶対加速度を測るため、同方向の入力については Hrel = Habs − 1 として 相対加速度 / 地動加速度の FRF に換算します(「応答は絶対量」をオフにすると換算しません)。 γ² は多重コヒーレンスで、1 に近いほど出力が測定した入力で説明されている(FRF の精度が高い)ことを示します。
② 極の推定 — FRF に共通分母の有理関数モデルを当てはめ、分母多項式の根から極 λ を求めます。次数を 1 から nmax まで上げながら繰り返します。
| 手法 | 考え方 | 特徴 |
|---|---|---|
| LSCF | z 領域(z = e−iωΔt)の共通分母モデル。正規方程式 [Σ(T − SᵀR⁻¹S)]a = 0 を解く(R, S, T は FRF の逆 FFT から作る Toeplitz 行列) | 高次でも数値的に安定で、安定化線図が明瞭。推奨 |
| LSCE | 帯域の FRF を逆変換したインパルス応答に自己回帰モデル Σβjh(t+j) = 0 を当てはめる | 時間領域の古典的手法。帯域内のビン数に比例して計算量が増える |
| RFP | 有理分数多項式(Forsythe の直交多項式、分子次数 20) | 狭い帯域向き。広帯域では不安定になりやすい(次数 20 まで) |
| RFP 分割 | 帯域を 800 ビンごとに分割して RFP を適用 | ビン数が多い場合の RFP |
③ 安定化判定 — 次数 n の各極について、次数 n−1 の極の中に振動数の相対差 < errf(既定 0.001)となる極があり、 かつ減衰の相対差 < errξ(既定 0.05)となる極があり、ξ > 0 のとき「安定極」とします(安定化線図の緑 ×)。
④ 極の選択 — 既定の「自動」では、対象モードの振動数 fsel ± rtol·fsel の範囲にある安定極の 振動数の中央値を求め、それに最も近い極を採用します。「入出力(FRF)」タブの安定化線図を Shift+クリックすると、 画面上で最も近い安定極を個別に選べます(選択はその場で反映されます)。
⑤ LSFD(留数と剰余項)と刺激関数 — 選んだ極を固定し、FRF を次式で最小二乗近似して留数 A と剰余項を求めます。
地動を受ける比例減衰系では、相対加速度 / 地動加速度の FRF が H(ω) = Σ ω²βrφr / (ωr² − ω² + 2iξrωrω) となることから、
※ βφ は各モードで留数が最大の入力(参照入力)に対する値です。全モードを同定できていれば各 ch の Σβφ は 1 に近づきます。
1 次モードの屋上の βφ は、せん断型の建物で 1.2〜1.4 程度が目安です。
※ 剰余項は解析帯域より下(LR: 定数)・上(UR: −ω² に比例)のモードの影響を近似するもので、既定で両方考慮します。
※ 実装上の修正点: LSCE で下限振動数 flo > 0 とした場合、切り出した帯域のインパルス応答の時間刻みは
Δt′ = 1/(2(fup − flo)) であり、周波数の原点も flo だけずれます。本アプリはこの刻みとずれを用いて極を求めます
(全帯域の刻み 1/(2fup) を用いると振動数が fup/(fup − flo) 倍に偏るため)。
| 指標 | 意味 | 良好の目安 | 悪い場合に疑うこと |
|---|---|---|---|
| MAC | 2 つのモード形状の相関(0〜1) | 対角 ≧ 0.8 非対角 ≦ 0.3 |
非対角が大 → 同一モードの重複抽出、近接モードの混在 |
| MPC | 実部と虚部の直線性(0〜1) | ≧ 0.7 | S/N 不足、近接モードの混在、非比例減衰 |
| MPD | 振幅重み付き位相ばらつき [rad] | ≦ 0.5 | 同上。特に 0.8 を超える場合は物理モードでない可能性が高い |
| MCF | モード複雑度(0=実モード) | ≦ 0.3 | 同上 |
| σ₁/σ₂ | ピークでのモード分離度 | 大きいほど良い (目安 3 以上) |
小さい → 近接モードが重なっている、雑音が卓越 |
| 図 | 見方 |
|---|---|
| 正規化自己相関 | 構造の卓越振動成分があると減衰振動波形になる。ゆっくり揺れる成分が支配的なら低周波ドリフトの混入を疑い、ハイパスフィルタを検討。 |
| PSD(Welch 法) | 1 ch ごとのパワースペクトル。鋭すぎる(幅のない)ピークは機械振動などの調和成分の可能性。 |
| 確率密度 | 常時微動は正規分布に近いのが普通。中央が尖り裾が重い(過剰尖度 > 0)なら衝撃的外乱、 双峰形・平坦(過剰尖度 < 0)なら周期成分の卓越を疑う。 |
| 正規確率プロット | 点列が直線 y = x に沿えば正規分布。両端が外れる場合は外れ値(外乱)がある。 縦軸の基準分位点は、シードを 0 に固定した標準正規乱数 n 個を昇順に並べた値。 |
| STFT スペクトログラム | 構造モードは時間を通して連続する横縞。時間的に局在した縦縞・斑点は外乱。該当区間を除いた再解析を検討。 |
| 振動数-減衰図 | 安定極が (f, ξ) 平面で塊になっている位置が真のモード。塊の広がりは同定のばらつきの目安。 |
| 合成スペクトル比較 | SSI で同定したモデルから合成したスペクトルと実測を比較。ピークの位置・形がよく合う次数ほどモデルが妥当。 |
| Hankel 特異値 √σ | 値が急に小さくなる位置がシステムの実効次数。ordmax はそれより大きく取る。 |
| MAC ヒートマップ・モード複素性 | MAC は (6) 参照。複素性図は矢印が 0°/180° の線上に並ぶほど実モード(良好)。 |
| 時刻歴の RMS 線 | arms = √(Σx²/N)。ch 間の振幅レベル比較に使う。 |
※ 確率密度・正規確率プロットの参考線(標準正規分布・y = x)と、歪度・尖度による「要確認」の目安は、読み取りやすくするために追加した補助表示です。
| 症状 | 原因 | 対処 |
|---|---|---|
| 「極値が N 個しか見つかりません」エラー | SDOF ベルが狭すぎて自己相関の振動が足りない | np_max を小さくする/DF2 を大きくする/MAC_lim を下げる |
| 「MAC > MAC_lim を満たすビンがありません」エラー | MAC_lim が厳しすぎる、選択振動数がピークから外れている | MAC_lim を 0.85 程度まで下げる/スペクトルを見て選択振動数を修正 |
| 「DF1 が周波数分解能に対して小さすぎます」エラー | Δf = fs/nxseg が粗い | n_xseg を大きくする(2048 等)/DF1 を大きくする |
| find_min で次数が見つからない | 全モードで同時に安定極が揃う次数が無い | rtol を大きくする/ord_max を大きくする/SC を緩める/ 対象モードを減らす/「固定次数を指定」に切替えて安定化線図から次数を選ぶ |
| 減衰定数が異常に大きい/小さい | 記録長不足、近接モードの混在、機械振動の誤認 | 記録長を確認(1 次周期の 1000 周期以上)/DF2 を狭めて近接モードを分離/ 機械振動の可能性がある周波数を除外 |
| 解析に時間がかかりすぎる | データ点数・ch 数・br・ord_max が大きい | 前処理の間引き q を上げる(例 q=2)/br を小さくする/ step を 2 以上にする/使用 ch を絞る/参照 ch を指定する |
| モード形状図が高さ方向に表現されない | センサ配置の「高さ GL+」が未入力(すべて同じ) | センサ配置表の高さを入力(「階高を自動入力」ボタンも利用可) |
本アプリは外部ライブラリの追加を避けるため、必要な数値計算をすべて自前実装しています (数式表示の KaTeX のみ CDN から読込)。下表の中欄は、同じ処理を行う代表的な数値計算ライブラリ(Python の NumPy / SciPy)の関数です。
| 機能 | NumPy / SciPy | 本アプリの実装 |
|---|---|---|
| FFT | np.fft.* |
基数 2 Cooley-Tukey(2 の冪乗長)+ Bluestein chirp-z(任意長) |
| クロススペクトル | scipy.signal.csd |
Welch 法を再現(Hann 窓・detrend='constant'・density スケーリング・片側 2 倍) |
| 特異値分解 | np.linalg.svd |
片側 Jacobi 法(実・複素の両方。特異値は降順) |
| QR 分解 | np.linalg.qr |
Householder 変換(reduced モード) |
| 一般固有値問題 | scipy.linalg.eig |
Householder による Hessenberg 化 → 複素 Wilkinson シフト QR 法 → Schur 形の後退代入で固有ベクトル |
| IIR フィルタ設計 | butter, cheby1 |
アナログプロトタイプ → 周波数変換(lp2lp/hp/bp/bs)→ 双一次変換 → SOS |
| 零位相フィルタ | sosfiltfilt |
odd 拡張パディング + 定常初期条件(sosfilt_zi 相当)+ 前進後退 |
| 間引き | decimate |
cheby1(8, 0.05, 0.8/q) + 零位相 + q 点間隔抽出 |
| 極値検出 | find_peaks |
プラトー中央を採用する SciPy と同一のアルゴリズム |
| 曲線フィット | curve_fit |
δ = λ·i の場合は閉形式 λ = Σ(i·δ)/Σi²(厳密解) |
| 連立方程式・逆行列 | np.linalg.solve, inv |
部分ピボット付き LU 分解(実数・複素数) |
| 乱数 | np.random.seed, randn |
MT19937 と旧 API の極座標法ガウス乱数を再現(NumPy と同一の数列) |
| 補間 | interp1d |
linear・外挿あり(searchsorted と端点クリップを SciPy と同じ手順で) |
| PSD・STFT | welch, stft |
Hann 窓・片側。stft は両端 nperseg/2 のゼロ詰めと padded=True を再現 |
| 多項式の根 | np.roots |
コンパニオン行列を平衡化(対角スケーリング)し、複素シフト QR 法で固有値を求める。実係数では共役対を厳密に揃える |
| 最小二乗(最小ノルム解) | np.linalg.lstsq |
Householder QR で直交変換した後、R の特異値分解で解く(rcond = eps·max(m, n)) |
実装上の工夫・留意点
① 共役対の判定: 上記 (5)(a) の通り、複素 QR 法の結果を対称化してから厳密一致判定を適用しています。
② A の算出: QR 分解後の inv(R)·S を、数学的に等価で数値的により安定な
三角方程式の後退代入で解いています。
③ Hankel 行列(cov)の計算: 反対角線上でブロックの窓が 1 サンプルずつずれる性質を使い、
漸化式で更新しています(結果は厳密に同一、計算量は約 br/2 分の 1)。
④ SSI の 'dat' 法・不確かさ伝播・クラスタリング・多セットアップは未実装です(上記「適用範囲」参照)。
⑥ 検証: FDD / EFDD / FSDD / SSI / データ診断の各計算は、同一データを Python の数値計算ライブラリで解析した結果と照合し、
一致を確認しています(v260917_r1 時点)。入出力同定(LSCF / LSCE / RFP / RFP 分割・安定化判定・LSFD)も同様に照合しています(v260918_r2)。
⑤ Web Worker を使いません。file:// での動作を保証するため、解析は
async 関数と setTimeout による協調的分割実行としています(進捗表示・中止が可能)。
※ 新しいウィンドウに計算書 HTML を開きます。ブラウザの印刷機能(Ctrl+P)で「PDF に保存」を選んでください。
※ 用紙は A4 縦、余白は上 15mm/下 18mm/左右 12mm に設定されます。
※ 文字コードは UTF-8 (BOM 付き)。Excel でそのまま開けます。
※ 手法・表示方向・変形倍率・方位角・仰角・変形前表示・軌跡表示は、アニメーションタブの現在の設定を使います。
※ 記録中はこのタブを表示したままにしてください(非表示にするとブラウザが描画を間引き、動画が乱れます)。
※ 動画は 1 周期の秒数で表示速度を決めた「形状の説明用」で、実時間の振動ではありません。