サイト内検索
ココログ最強検索 by 暴想
フォト

リンク

無料ブログはココログ

scilab

2017年12月14日 (木)

H3E信号の変調率と検波歪/後

次にAF信号を大きくして変調率の変化を調べる。

  1. AF信号を1.5倍にする。

    H3e_af15_time

    包絡線は1.75から0.25の間で変化する。

    H3e_af15_frq

  2. 検波信号は次のやうになる。

    H3e_af15_demod

    下側の尖りが鋭くなる。


    変調率を計算すると
    (1.11-0.16)/(1.11+0.16)=0.748
    75%

  3. 更にAF入力を2倍に上げる。

    H3e_af20_time

    見た目はAM 100%変調らしい。

    H3e_af20_frq

    USBのレベルは搬送波と同じになる。

  4. 検波信号は次のやうになる。

    H3e_af20_demod

    これまでと同様に変調率を求めれば100%になるが下側の曲線は完全に尖つてしまつた。
    正弦曲線を重ねてみる。

    H3e_af20_demod_wsin

    変調率50%の場合より変化が大きくなつてゐる。この時の歪みは下図の通りである。10Hzの整数倍高調波が連続的に低い周波数から分布してゐる。

    H3e_af20_demod_frq


  5. 結論
    H3E信号を包絡線検波すると本質的に歪が発生する。
    歪はAF信号のレベルにしたがつて増加する。変調率が小さいと歪は少ないが、変調を深くすると歪が大きくなる。

2017年12月13日 (水)

H3E信号の変調率と検波歪/前

Scilabシミュレーション

  • H3E SSB信号に対してA3E信号の変調率を適用してみる。
  • H3E信号を包絡線検波するときの歪を考察する。

H3E信号は舊電波型式でA3Hと呼ばれ、搬送波付きのSSBである。包絡線検波器で不完全ながら検波できる。アイコムのIC-720、IC-551、IC-505などのAMモードではH3E信号が使用されてゐる。

  1. A3E 100%変調の信号からLSBを取り去り、USB信号と搬送波からなるH3E信号を考へる。

    H3e_50_time_2

    包絡線は1.5から0.5の間で振動をしてゐる。 しかし正弦曲線とは少し異なる様子だ。

    H3e_50_frq

  2. 検波信号は以下のやうになる。

    H3e_50_demod

    検波信号から変調率を計算すると
    (0.95-0.32)/(0.95+0.32)=0.496
    50%

    100%変調のA3E信号から側帯波を一つ取り去つてH3E信号にするとそのAM変調率は50%となる。

    曲線はやはり正弦曲線とは異なる。上側が緩やかで下側が鋭く見える。では正弦曲線と重ね合はせてみよう。

    H3e_50_demod_wsin

    赤線が正弦曲線である。H3E信号は下降が遅く、上昇が速いことが分かる。下図は周波数解析である。10Hzの高調波成分が多数発生してゐる。

    H3e_50_demod_frq

  3. これはH3E信号の原理に由来する歪である。

    本来A3E信号はUSBとLSBが搬送波に加算され、搬送波の位相に変化を与へることなく振幅のみ変化させる。
    しかしH3E信号では側帯波が一つだけになり、搬送波の位相を変化させてしまふ。そのため包絡線も正弦曲線から変化するのである。

    この辺りの議論は、JJ1GRK高木氏がまとめてゐたので参考にされたい。

     「SSBの音は何故悪い----SSB高音質化への取り組み

 

    2017年12月10日 (日)

    AM(A3E)信号 SSB不均等の考察3

    では安直にAF入力を増加させて変調率の変化をみる。

     

    1. 変調入力を1.2倍にしてみる。
      正側ピークは、正常時100%変調の場合と同じ2になる。
       

      A3e_100_usb3db_45d_12_time
      LSBのレベルは正常時100%のレベルより約1dB増加する。A3e_100_usb3db_45d_12_frq

      検波信号は、下側ピークの変化が米粒の胚芽が缺けたやうな形状になり歪みが著しくなる。

      A3e_100_usb3db_45d_12_demod

      検波信号から変調率を計算すると
      (1.26-0.19)/(1.26+0.19)=0.738
      74%

    2. 変調入力を1.5倍にしてみる。安直には、変調率67%に対して1.5倍すれば100%になる大きさである。

      A3e_100_usb3db_45d_15_frq

      A3e_100_usb3db_45d_15_time

      検波信号

      A3e_100_usb3db_45d_15_demod

      検波信号から変調率を計算すると
      (1.42-0.14)/(1.42+0.14)=0.821
      82%

    3. 結論
      側帯波が不均等になり変調率が低下してゐる場合、安直に変調入力を増加しても変調率を100%にはできず歪みが激しくなるばかりである。

      つまり低電力変調したAM信号をBPFに通す場合、一方の側帯波のレベルを減衰させるやうな事を避けねばならない。

    AM(A3E)信号 SSB不均等の考察2

    1. 次にUSBが3dBの減衰を受け位相も45度遅れる場合を模擬する。

      A3e_100_usb3db_45d_time

      A3e_100_usb3db_45d_frq

      包絡線の負のピーク側の曲線が正弦波ではなくなつてゐる。つまり歪んでゐる。

    2. 検波信号を出力する。
      A3e_100_usb3db_45d_demod

      検波信号から変調率を計算すると
      (1.16-0.23)/(1.16+0.23)=0.669
      67%

    2017年12月 9日 (土)

    AM(A3E)信号 SSB不均等の考察1

    Scilabシミュレーション
    低電力変調でAM信号を発生する場合に、終段増幅器までに通過するBPFにより側帯波のレベルが不均等になる場合の不都合を考察する。
    尚この議論ではピーク電力が抑制されないことを前提とする。ピーク電力の抑制による変調率と波形の変化は別に論ずる。

    • 側帯波が均等である理想状況の確認
    1. AM (A3E) 100%変調を模擬する。
      1kHzの搬送波に10Hzの変調を掛ける。
      サンプリング周波数は48kHz。
      両側帯波のレベルはキャリアに対して-6dBとなる。
      スペクトラムの縦軸はdB。A3e_100_time

      A3e_100_frq

    2. 検波のために信号を二乗し更にその平方根を取る。
      正の値になる。
    3. A3e_100_time_sqr

    4. 2乗するとDC成分、10Hzの変調成分、2kHzに飛ばされた信号だけでは済まず、10Hzで変調の掛つた2kHzの高調波が多数発生する。 A3e_100_sqr_frq
    5. この信号を2kHz以上の不要信号をカットするLPFに通す。A3e_lpf
    6. LPF通過後の信号、これが検波された信号。
      冒頭のリンギングのやうな波形は、初期状態に信号が入力されて発生するフィルターの過渡応答。
      変調率は100%である。

      A3e_100_demod

      LPFを通す前、包絡線の振幅はp-pで2あつたのにLPFを通すと1.27まで低下する。その理由はLPFでカットした2kHz以上の信号に乗つてゐた10Hz成分のエネルギーが失はれたから。

    偶々かも知れないが1.27はおよそ10^(1/10)だ。

     

    2017年5月25日 (木)

    scilabを6.0.0に更新

    scilab 64ビット版を5.5.0から6.0.0に更新した。

    理由はwavwriteコマンドの実行時にエラーが発生することだつた。
    疑似音声wavファイルの10分版を作らうとしてゐたが、wavファイルへの書き出しコマンドであるwavwriteコマンドの実行でエラーが発生したのだ、

        -->wavwrite(y, fs*1e3, 'filename.wav')
        Warning !!!
        Scilab has found a critical error (EXCEPTION_ACCESS_VIOLATION)
        with "mput" function.
        Save your data and restart Scilab.

    1分のwavファイルを作る場合にエラーは発生しない。1分のwavファイルを作成するスクリプトにはstacksize('max')コマンドが既に埋め込んであつた。スタックエラーだとしてもどう対処すればいいのか直ちにわからない。

    scilabのメーリングリストを検索したがwavファイルの書き出しを行ふwavwrite、savewaveコマンドの不具合に関する記事は見つからなかつた。

    そこで最近更新されたscilab 6.0.0を使つてみることにした。その結果エラーは発生せずwavファイルが生成された。

    6.0.0ではスタック領域確保のコマンドstacksizeがなくなつた。6.0.0の新機能説明に記述があつた。これは便利になつた。大きな行列が生成されるとスタックが一杯になることが良く起るから。

    • New language parser and interpreter, ensuring:          
      • Support for bigger data sets, thanks to dynamic memory usage. No need for stacksize anymore.
       
     

    2010年8月 3日 (火)

    ScicosLab 4.4b8 が出てゐた

     ScicosLab 4.4 beta7 (Mon Feb 01 2010)以来4ヶ月振りに新版がでた。
     scicoslab.orgのサイトにはなくscicos.orgのサイトにあるのが嫌らしいところだ。
     MathKBの掲示板で知った。

    H22.8.5追記
    Scicosのmodnumライブラリーも同梱されてゐる。これは便利だ。ただ説明書は改善されてゐるかまだ見てゐない。
    追記終り

    H22.8.17追記
     早合点。間違ひだった。modelicaを見間違へた。
    追記終り

    2010年4月24日 (土)

    Scilab ヘルプの著者は自然対数が好き2

     常用対数の計算は自然対数を元に計算するのが通常とのこと。
    その理由は、自然対数は容易に微分ができテイラー展開もできるため、関数計算が容易になるからであるとのこと。その通り。

     log10 X = ln X / ln 10
    これが普通らしい。浅学を恥づ。

    出典
     西村芳一「ディジタル信号処理による通信システム設計」CQ出版、2006年6月、「3-8対数」140ページ

    関連記事
     Scilab ヘルプの著者は自然対数が好き

    2010年1月27日 (水)

    Scilab PN符号のスペクトラム3 帯域制限してゐない

     これまで
    Scilab PN Sequence Generator(符号発生器)
    Scilab PN符号のスペクトラム1
    Scilab PN符号のスペクトラム2 信号がない周波数
    にわたりPN符号のスペクトラムを見てきたが一つ無視してきたことがある。それは帯域制限をしてゐないことである。

     fftにかけてゐる信号は矩形波のPN符号を帯域制限せず標本化したものである。従ってナイキスト周波数5kHz以上にあるPN符号本来のスペクトラムが5kHz以下の観測してゐるものにかぶってきてゐる。
     レベルを正確に知りたい場合はその点に留意し標本化周波数を高く取り、折り返される成分の比が小さくなるやうにする。
     因みに標本化周波数を20kHzに上げ10kHzまでのスペクトラムを見てみた。
    Pncode6
    主ローブと折り重なる9kHzから10kHzのピークは-26dB。百分率では0.25%。まあ許容できる値ではある。

    2010年1月24日 (日)

    Scilab 処理点数を指定するfftマクロ

     MATLABのfftのやうに処理点数を指定できるマクロを作ってみた。名前はn_fftとした。

     Y=n_fft(X,n) はn点のDFTを出力する。Xの長さがnより短い場合、長さがnになるやうXの後部に0を付加しDFTを行ふ。またXの長さがnより長い場合、n+1以降のデータを切り捨てDFTを行ふ。

      function [Y] = n_fft(X,n)

      // Y = n_fft(X,n) returns the n-point DFT.
      // If the length of X is less than n, X is padded with trailing zeros to length n.
      // If the length of X is greater than n, the sequence X is truncated.
      // When X is a matrix, the length of the columns are adjusted in the same manner.

      len = length(X);

      if len < n then
      X((len + 1):n) = 0;
      end;

      Y = fft(X(1:n));

      endfunction

    * nfftからn_fftに書き換へ済み

    より以前の記事一覧