信号の圧伸
音声処理などの用途では、信号を量子化する前に "圧縮器" と呼ばれる対数演算を使用するのが一般的です。圧縮器の逆演算は、"伸張器" と呼ばれます。圧縮器と伸張器を組み合わせて、"圧伸器" と呼ばれます。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