2008年12月28日

Spectrum



HB2ToneのDataDisplayに記述されているEquのSpectrumの式。


Spectrum_W=0.5*real(Vload*conj(Iload.i))


real():実部を返す


Vload:output部分のwire node


conj():複素数の共役を返す


0.5*:要調査、0.5*をすることでP_Plobeと同じ値になる。


Spectrum=10*log(Spectrum_W)+30


10*log():dB変換


+30:dBからdBmに変換


Spectrum[]


Spectrum[RFpower,freq]


Sweepはharmonic balance simulationでRFpowerのみ。


posted by nyaanyaaa at 12:35| Comment(0) | TrackBack(0) | ADS | このブログの読者になる | 更新情報をチェックする

Advanced Design System 2008



研究室で使っているAdvanced Design System 2008のDataDisplayのEquのメモなどを書いてみる。


ADSは高級なデータ処理関数が利用できるようで、ただ単にグラフ化するだけじゃもったいない。数式で処理できるものは出来るだけやって手間を省いていきたい。


そこでとりあえずは、IP3をcomponentのIP3inを使わずに出力部分の電力から導き出すようにしたい。IP3inの値と手動測定方法と同じ方法では答えに差が生まれてしまうので、シミュレートの結果からも手動測定を行ってIP3を出したい。手動でexcelに手打ち・近似線目視は嫌になるので、せっかく配列に値があるなら利用するしかないだろう。


という作業簡略化の一歩としてやってみる。


方法としては単純に、


1)基本波の出力電力、n次波の出力電力を用いて


2)最小二乗法で近似直線を求めて


3)二直線の交点を求める


という流れになる。


posted by nyaanyaaa at 12:35| Comment(0) | TrackBack(0) | ADS | このブログの読者になる | 更新情報をチェックする

2008年11月28日

IIP3のためのEquationを作って



ADSが持つ機能の豊富さを改めて気づいた。今までの使い方がADSに申し訳ないほど機能を使っていなかったんだなぁ。せっかくの高機能、もっと使って行きたい。


Equationを調べるために付属ドキュメントを読んでいて、とある驚愕の機能を見つけてしまった。


今までADSからExcelにデータをエクスポートする方法は「Tools - Data File Tool」を使ってエクスポートしてから、Excelの上でデータを手動で処理(空白除去、セル分割)をしていた。しかし、ADSには元々CSVエクスポート機能が付いていた。「File - Export - Write selected list to CSV file」、選択中のListをCSVで出力する機能がこれだ。一発でCSVで出力してくる。


気付こうよ、歴代先輩たち・・・。


posted by nyaanyaaa at 18:04| Comment(0) | TrackBack(0) | ADS | このブログの読者になる | 更新情報をチェックする

Spectrumプロットの最小二乗法



IIP3を最小二乗法で求める。


fundFreqL=4


imFreq=3


Spectrum_W=0.5*real(Vload*conj(Iload.i))


Spectrum=10*log(Spectrum_W)+30


calcStartRFpower_fundFreqL=find(RFpower==-60)


calcStopRFpower_fundFreqL=find(RFpower==-55)


最小二乗法


1次関数(y=ax+b)を求める


x:RFpower(input)


y:Spectrum(output)


a:ols_a_fundFreqL


b:ols_b_fundFreqL


Σ計算(総和):総和計算にはsum()関数を利用する。

sumY_fundFreqL=sum(Spectrum[calcStartRFpower_fundFreqL::1::calcStopRFpower_fundFreqL,fundFreqL])


sumX_fundFreqL=sum(RFpower[calcStartRFpower_fundFreqL::1::calcStopRFpower_fundFreqL])


sumX2fundFreqL=sum(powRFpower[calcStartRFpower_fundFreqL::1::calcStopRFpower_fundFreqL])


sumXY_fundFreqL=sum(RFpower[calcStartRFpower_fundFreqL::1::calcStopRFpower_fundFreqL]*Spectrum[calcStartRFpower_fundFreqL::1::calcStopRFpower_fundFreqL,fundFreqL])


ols_a_fundFreqL=(array_size_fundFreqL*sumXY_fundFreqL-sumX_fundFreqL*sumY_fundFreqL)/(array_size_fundFreqL*sumX2_fundFreqL-pow(sumX_fundFreqL,2))


ols_b_fundFreqL=(sumX2_fundFreqL*sumY_fundFreqL-sumXY_fundFreqL*sumX_fundFreqL)/(array_size_fundFreqL*sumX2_fundFreqL-pow(sumX_fundFreqL,2))


参考

http://www5d.biglobe.ne.jp/~tomoya03/shtml/algorithm/Linear.htm


http://www12.plala.or.jp/ksp/computPhys/least-square/index.html


posted by nyaanyaaa at 17:42| Comment(0) | TrackBack(0) | ADS | このブログの読者になる | 更新情報をチェックする

配列



Sweepさせた時の配列の扱い


array[number]


array:配列名、普段はInstance Name。


number:配列番号


numberは範囲指定も可能で、


array[start::step::stop]


で記述すると指定範囲のみを利用できる。n次元配列でも使えるし、start、step、stopにEquで作成した変数も使える。


posted by nyaanyaaa at 11:47| Comment(0) | TrackBack(0) | ADS | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。