atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • アットウィキで新規ウィキ作成
  • 編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ツール
    • このウィキの管理者に連絡
    • このページを通報・違反報告する
  • ヘルプ
    • ご利用ガイド
    • はじめての方へ
    • プラグイン一覧
    • よくある質問
    • 編集モードの違いについて
    • 不具合や障害を見つけたら
    • 管理・設定マニュアル
なみなみメモ
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
なみなみメモ
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
  • トップ
  • 人気ページ
  • ページ一覧
  • 編集
  • 検索
記事メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • アットウィキで新規ウィキ作成
  • 編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ツール
    • このウィキの管理者に連絡
    • このページを通報・違反報告する
  • ヘルプ
    • ご利用ガイド
    • はじめての方へ
    • プラグイン一覧
    • よくある質問
    • 編集モードの違いについて
    • 不具合や障害を見つけたら
    • 管理・設定マニュアル
  • atwiki
  • なみなみメモ
  • Maximaでノイズ解析(2)

なみなみメモ

Maximaでノイズ解析(2)

最終更新:2006年03月18日 22:13

匿名ユーザー

- view
だれでも歓迎! 編集
Maximaでノイズ解析(1)ではオペアンプの出力にどのような電圧がでているのかを計算しました。
今回は、これを、物理的にきちんと意味のあるスペクトル表示にしたいと思います。

パワースペクトル

ここでパワースペクトルの定義を考えます。
パワースペクトルの定義は
S(ω)=lim(T → ∞) <X* X / T>
でした。ここで、X=X(ω)は信号x(t)のフーリエ変換。Tはその測定時間。X*はXの複素共役でやんす。<・>はアンサンブル平均でしたよね?
ここで、例えばX(ω)が電圧のデータだった場合にはS(ω)の単位はV2/Hzとなるのですが、データシートなどには、しばしばこれのルートを取ったV/rHz(rHzはルートヘルツと読む)という単位が使われています。

無相関と仮定

ここで、Xがいくつかの成分の重ねあわせで書かれている場合を考えます。
X=a1X1+a2X2+a3X3+a4X4+・・・
のように定義されている場合を考えます。パワースペクトルを計算すると
ST=a1*a1<X1*X1>+a1*a2<X1*X2>+a1*a3<X1*X3>+・・・ ぎゃー
とおそろしく複雑になるので、とりあえず違う成分は無相関であると仮定します。
Sij=<Xi*Xj>=0(i≠j)

実際に計算

では、オペアンプのノイズ解析に戻りましょう。上のようなパワースペクトルを計算する方法はいろいろあると思いますが、まぁ適当にやっていきましょう。
まず、Maximaでノイズ解析(1)の中で出てきたi1、i2、i3、i_n、e_nに関して次のように仮定してやればよろしいということはなんとなくわかります。
S1=<i1*i1>;S2=<i2*i2>;S3=<i3*i3>;Si=<i_n*i_n>;Se=<e_n*e_n>;Sホニャララ=0
ST=a12S1+a22S2+a32S3+ai2Si+ae2Se
ここで、a-は実数であると仮定しました(抵抗しか使ってないし)。
例のsubstを駆使すれば出来そうですが、さすがにちょっと面倒くさい。そこで、次のように考えます。とりあえず、v_outの式からi1の係数を引っ張り出す。係数を2乗する。それにs1を掛ける。i2、i3、i_n、e_nに関して同様の計算し、すべてを足し合わせるとSTになる・・・はず。

係数を引っ張り出す

では係数を引っ張り出して見ましょう。係数は英語でcoefficientですから、coeff~という関数がありそうです。という希望を旨に抱き、
? coeff
とinputと書かれているところに入力します。
(%i1) ? coeff;
0: COEFF :(maxima.info)Definitions for Polynomials.
1: LOGCONCOEFFP :Definitions for Logarithms.
2: PCOEFF :Definitions for Affine.
3: TAYLOR_ORDER_COEFFICIENTS :Definitions for Series.
Enterspace-separatednumbers,ALLorNONE:
なにやらありましたね。番号を押せと書いているので早速0と入力してください。
Enterspace-separatednumbers,ALLorNONE:0;
Info from file C:/PROGRA~1/MAXIMA~1.1/info/maxima.info:
- Function: COEFF (exp, v, n)
   obtains the coefficient of v**n in exp. n may be omitted if it is
   1. v may be an atom, or complete subexpression of exp e.g., X,
   SIN(X), A[I+1], X+Y, etc. (In the last case the expression (X+Y)
   should occur in exp). Sometimes it may be necessary to expand or
   factor exp in order to make v^n explicit. This is not done
   automatically by COEFF.
     (%i1) COEFF(2*A*TAN(X)+TAN(X)+B=5*TAN(X)+3,TAN(X));
     (%o1)             2 A + 1 = 5
     (%i2) COEFF(Y+X*%E**X+1,X,0);
     (%o2)              Y + 1
(%o1) false
さてさて、目標にぴったりあった内容になってます。英語が嫌いという人は、ponpoko氏の日本語訳を参照してください。これをみると、ちゃんとした計算結果が出るためには、あらかじめ因数分解か展開をしておいてということなので、まず、あらかじめ展開をしておきます。いままでのnoise.macに次のように追加します。
tem1:expand(RHS(eqn1*fac))$
ここでRHSというのは右辺(RightHandSide)のことです。左辺の場合はLHS。だから、これで、「tem1はeq1の右辺を展開したものである」という意味になります。行末の$は計算結果を表示しないときにつかいます。展開なんかされた結果なんか見たってわかんないですからね。eqn1などの定義も表示されるのがだんだんうるさくなってきたので、;を$に変えておきましょう。
さていよいよ本題です。
c0:ratsimp((coeff(tem1,e_n)));
c1:ratsimp((coeff(tem1,i_n)));
c2:ratsimp((coeff(tem1,i1)));
c3:ratsimp((coeff(tem1,i2)));
c4:ratsimp((coeff(tem1,i3)));
ここでratsimp(~)というのは~を一番簡単な形にするという関数で、Mathematicaで言うところのFullSimplifyに対応したようなものです。

ここまでのまとめ

  • わからない命令があったときは、
    ? キーワード
    
    でヘルプが見られるので目的の関数があるか探す。
  • 英語が面倒な人はponpoko氏のマニュアルを探す。
  • coeff、ratsimp、RHS、LHSのヘルプをさがしてください。

実際にやってみたら



ここまでの内容をnoise.mac.txtにアップしておきました。
LINE
シェア
Tweet
LINE
シェア
Tweet
添付ファイル
  • Maxima.png
  • noise.mac.txt
記事メニュー
  • トップページ
  • メニュー
  • 特許法
  • 使ってるソフトウェア

更新履歴

取得中です。
記事メニュー2

更新履歴

取得中です。
最近更新されたページ
  • KICAD (4882日前)
  • 特許法 (4882日前)
  • トップページ (5335日前)
  • Maximaでノイズ解析(2) (5513日前)
  • maxima (5526日前)
最近更新されたWiki
  • 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  • 七不思議 @ ウィキ
  • アニヲタWiki(仮)
  • 機動戦士ガンダム EXTREME VS.2 XBOOST wiki
  • 模擬ドラ選手名鑑wiki
  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.