メインコンテンツ

信号の圧伸

音声処理などの用途では、信号を量子化する前に "圧縮器" と呼ばれる対数演算を使用するのが一般的です。圧縮器の逆演算は、"伸張器" と呼ばれます。圧縮器と伸張器を組み合わせて、"圧伸器" と呼ばれます。compand 関数を使用して圧伸器を実装できます。

μ 則を使用したデータ シーケンスの圧縮と伸張

この例では、μ 則圧縮器と μ 則伸張器を使用して圧伸器を実装します。

データ シーケンスを生成します。

data = 2:2:12
data = 1×6

     2     4     6     8    10    12

μ 則圧縮器を使用してデータ シーケンスを圧縮します。mu の値を 255 に設定します。圧縮されたデータ シーケンスの範囲は 8.1 ~ 12 です。

compressed = compand(data,255,max(data),'mu/compressor')
compressed = 1×6

    8.1644    9.6394   10.5084   11.1268   11.6071   12.0000

μ 則伸張器を使用して圧縮されたデータ シーケンスを伸張します。伸張したデータ シーケンスは元のデータ シーケンスとほぼ同一になります。

expanded = compand(compressed,255,max(data),'mu/expander')
expanded = 1×6

    2.0000    4.0000    6.0000    8.0000   10.0000   12.0000

元のデータ シーケンスと伸張されたデータ シーケンスの差を計算します。

diffvalue = expanded - data
diffvalue = 1×6
10-14 ×

   -0.0444    0.1776    0.0888    0.1776    0.1776   -0.3553

A 則を使用したデータ シーケンスの圧縮と伸張

この例では、A 則圧縮器と A 則伸張器を使用して圧伸器を実装します。

データ シーケンスを生成します。

data = 1:5;

A 則圧縮器を使用してデータ シーケンスを圧縮します。A の値を 87.6 に設定します。圧縮されたデータ シーケンスの範囲は 3.5 ~ 5 です。

compressed = compand(data,87.6,max(data),'A/compressor')
compressed = 1×5

    3.5296    4.1629    4.5333    4.7961    5.0000

A 則伸張器を使用して圧縮されたデータ シーケンスを伸張します。伸張したデータ シーケンスは元のデータ シーケンスとほぼ同一になります。

expanded = compand(compressed,87.6,max(data),'A/expander')
expanded = 1×5

    1.0000    2.0000    3.0000    4.0000    5.0000

元のデータ シーケンスと伸張されたデータ シーケンスの差を計算します。

diffvalue = expanded - data
diffvalue = 1×5
10-14 ×

         0         0    0.1332    0.0888    0.0888

参考

関数

トピック