RFワールド読者の掲示板U
 無線と高周波に関することを中心に、それ以外の話題も含めて、何でも書き込みOKの掲示板です。初めての方もネチケットを守って、お気軽にご参加下さい(^^)/
181 / 296 ツリー    ←次へ | 前へ→

SdrStudyの発振器のソースリスト 内藤 17/10/24(火) 13:50

Re:SdrStudyの発振器のソースリスト 中本 伸一 17/10/24(火) 14:41
Re:SdrStudyの発振器のソースリスト 内藤 17/10/25(水) 14:02

Re:SdrStudyの発振器のソースリスト
 中本 伸一  - 17/10/24(火) 14:41 -
内藤さんこんにちは!著者の中本です

>とありますが、負の周波数でfreqがマイナスの場合、if文が実行されないで
>0~-2πの範囲に収められなくなるような気がしますが、実際にはうまく、
>例えば-1000Hzの発振がおこなわれています。なぜでしょうか?

ご指摘の通りです。負の周波数を入れると以下の2行は全く
意味がなくphaseはマイナス方向に無限に成長します。

>if (phase > 2 * PI) // 一周したら
>phase -= 2 * PI; // 必ず0から2*PIの範囲に収めておく

しかしC#の三角関数ライブラリの内部でこの0から2*PIの範囲に
収めてから計算するという処理が重ねて実装されていますので
負の周波数を指定するとC#での処理ではなくライブラリ内の
処理で全く同様の処理が行われるためうまく発振します。

この事を確認するには上記の2行をコメントアウトして
発振させると正でも負でも問題なく動作します。

但し負の周波数での発振が無限に続くわけではなく、極めて
長時間動作させていると大きさの違う浮動小数点同士の加算の
際の桁落ちが発生し信号の質が低下する事になります。

従ってif文内に負の方向の判定を加える事で長時間安定して
発振する事になります。そのように改造するのがより汎用的に
なります。

ソースをよく読み込んで頂いて感謝します。
貴重なご指摘ありがとうございました。
引用なし

パスワード


560 hits
・ツリー全体表示

Re:SdrStudyの発振器のソースリスト
 内藤  - 17/10/25(水) 14:02 -
中本さん、こんにちは。
丁寧なご回答をありがとうございました。

EccStudyにもお世話になりましたが、RFワールドの
特集の本文中ではどちらもバージョン2を計画されている
ようなことが書かれていました。近日中に発表される
ご予定はあるのでしょうか。
引用なし

パスワード


527 hits
・ツリー全体表示

181 / 296 ツリー    ←次へ | 前へ→
 57,148
ページ:  ┃  記事番号:  

C-BOARD Moyuku v1.01b6