Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ФОСМС_1 2015 fokin

.pdf
Скачиваний:
24
Добавлен:
15.03.2015
Размер:
1.78 Mб
Скачать

Компандеры

Логарифмический компрессор μ имеет характеристику «вход-выход» следующего вида:

=

 

=

 

 

 

ln 1+

 

 

 

(4.1.7a)

 

 

 

 

 

 

 

 

 

ln 1+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= −1

=

 

 

 

1+

−1

 

(4.1.7a)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Логарифмический компрессор A имеет характеристику «вход-выход» следующего вида:

 

 

 

 

 

 

 

 

 

при

 

 

≤ 1

 

 

 

 

=

 

=

 

1+ln

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1+ln

 

 

при

 

> 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1+ln

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 +

1 + ln

 

 

 

 

при

1 + ln

 

 

 

≤ 1

= −1

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

exp 1 + ln

 

 

− 1

 

 

 

 

 

 

 

 

 

 

 

 

 

при других

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В примере неравномерного квантования с компандером используется 16 уровней для квантования синусоиды. Анализ графиков, представленных на рисунках, позволяет сделать следующие выводы: при равномерном квантовании абсолютная ошибка квантования меньше, а при неравномерном квантовании меньше относительная ошибка квантования.

11

Характеристики компандеров

% sim_Compander x=[-1:0.01:1];

slines = {'-', ':', '--', '-.'}; colors = {'r', 'g', 'b', 'k'};

subplot(2,1,1); mu=[1,10,255]; legendstr1=cell(1,length(mu)); for i=1:length(mu)

[y1,xmax]=mulaw(x,mu(i));

plot(x,y1,strcat(slines{i},colors{i}), 'LineWidth', 2); hold on; legendstr1{i}=sprintf('\\mu=%d', mu(i));

end legend(legendstr1,'Location','northwest'); xlabel('x'); ylabel('y'); title('\mu-law');

subplot(2,1,2); A=[1,5,87]; legendstr2=cell(1,length(A)); for i=1:length(A)

[y2,xmax]=Alaw(x,A(i)); plot(x,y2,strcat(slines{i},colors{i}),'LineWidth', 2); hold on;

legendstr1{i}=sprintf('A=%d', A(i)); end

legend(legendstr1,'Location','northwest'); xlabel('x'); ylabel('y'); title('A-law');

function [y,xmax]=mulaw(x,mu,ymax) if nargin<3, ymax=1; end

if nargin<2, mu=255; end xmax=max(abs(x));

y=ymax*log(1+mu*abs(x/xmax))./log(1+mu).*sign(x);

function x=mulaw_inv(y,mu,xmax) if nargin<3, xmax=1; ymax=1;

else ymax=max(abs(y)); end

if nargin<2, mu=255; end x=xmax.*(((1+mu).^(abs(y)/ymax)-1)/mu).*sign(y);

12

Пример квантования с компандером

function [d,dcode]=adc(a,b,c,code_table)

%Analog-to-Digital Conversion

%Input : analog signal a, boundary vector b, centroid vector c,

%and code_table

%Output: quantized samples d and the corresponding code dcode N=length(c);

if nargin<4, code_table=[0:N-1]'; end

Na=length(a); % dcode=zeros(Na,size(code_table,2)); for n=1:Na

I=find(a(n)<b(2:N)); if ~isempty(I)

d(n)=c(I(1)); dcode(n,:)=code_table(I(1),:);

else

d(n)=c(N); dcode(n,:)=code_table(N,:);

end

end

%dc040e03.m for Example 4.3 (Non-uniform Quantization of sin t) clear, clf

t=[0:0.05:7]; x=sin(t);

b0=-1; bN=1; xmax=max(abs([b0 bN]));

N=16; delta=(bN-b0)/N; % Width of the quantization interval b=b0+[0:N]*delta; % Boundary vector

c=b(1:N)+delta/2; % Midpoint vector x_q16=adc(x,b,c); % Uniform quantization bn=mulaw_inv(b/xmax,50)*xmax; cn=mulaw_inv(c/xmax,50)*xmax; xn_q16=adc(x,bn,cn); % Non-uniform quantization subplot(311);

plot(t,x,'k', t,x_q16,'b:', t,xn_q16,'r-','LineWidth', 2); legend('x','uniform','non-uniform','Location','southwest'); title('Analog and quantized signals');

e=x-x_q16; en=x-xn_q16; % Absolute error subplot(312);plot(t,e,'b:', t,en,'r-','LineWidth', 2); legend('uniform','non-uniform','Location','southwest'); title('Absolute quantization error');

tmp= abs(x)+0.01; re=e./tmp;

ren=en./tmp; % Relative error

 

subplot(313);plot(t,re,'b:',

t,ren,'r-','LineWidth', 2);

 

legend('uniform','non-uniform','Location','southwest');

 

title('Relative quantization

error');

13

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]