Podstawy arytmetyki stałoprzecinkowej

Autorzy: Wojciech Półchłopek, Roman Rumian, Paweł Turcza

Pliki: rozdzial_11.zip

Przykład 11.1

(plik przyklad_11_1.m).


				
				

Przykład 11.2

Przykład (plik przyklad_11_2.m) zjawiska cykli granicznych dla formatu Qm.n
% Przykład 11.2:
% m-plik: przyklad_11_2.m
%
% Cyfrowe przetwarzanie sygnałów. Podstawy, multimedia, transmisja. PWN, Warszawa, 2014.
% Rozdział 11: Podstawy artymetyki stałoprzecinkowej.
% Autorzy rozdziału: Wojciech Półchłopek, Roman Rumian, Paweł Turcza.
%
% Więcej na stronie internetowej: http://teledsp.kt.agh.edu.pl
%
% Opracowanie przykładu: marzec 2014 r./WP/RR.

clc; clear; close all;

nb=1; mb=3;                               % liczba bitów przed- i za przecinkiem; 
y_max=2^(nb-1)-2^(-mb); y_min=-2^(nb-1);  % wyznaczamy wartosci: maksymalną i minimalną zakresu;
q=2^(-mb);                                % wyznaczamy krok kwantyzacji;

a=[1, -0.875, 0.625];                     % współczynniki mianownika transmitancji filtra [1, -7/8, 5/8];
b=[0,0,1];                                % współczynniki licznika transmitancji filtra;
[z,p,K]=tf2zp(b,a);                       % sprawdzamy bieguny filtra (wektor p);
p

x=[0.375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; %wymuszenie;
y=[0, 0];                                 % inicjalizacja wektora wyjściowego;

% filtrowanie:
for n=1:24;
    y0=-a(2)*y(n+1)-a(3)*y(n)+x(n);       % próbka wyjściowa - filtracja;
    if y0>y_max, y0=y_max; elseif y0<y_min, y0=y_min; end; % ograniczenie (nasycenie);
    y(n+2)=round(y0/q)*q;                 % kwantyzacja;
end;

y_test=filter(b,a,x);                     % dla porównania - bez kwantyzacji;
    
    figure(1); n=1:24;
       plot(n,y_test(n),'rx');   grid on;          hold on;
       stem(n,y(n));
            xlabel('n');         ylabel('y(n)');   title('Cykle graniczne');
            legend('bez kwantyzacji','z kwantyzacja');
        
% KONIEC PRZYKŁADU 11.2.

Przykład 11.3

Przykład (plik przyklad_11_3.m) wyliczenia położeń na płaszczyźnie zespolonej biegunów sekcji drugiego rzędu dla formatu Qm.n, przy 8-bitowej kwantyzacji współczynników.
% Przykład 11.3:
% m-plik: przyklad_11_3.m
%
% Cyfrowe przetwarzanie sygnałów. Podstawy, multimedia, transmisja. PWN, Warszawa, 2014.
% Rozdział 11: Podstawy artymetyki stałoprzecinkowej.
% Autorzy rozdziału: Wojciech Półchłopek, Roman Rumian, Paweł Turcza.
%
% Więcej na stronie internetowej: http://teledsp.kt.agh.edu.pl
%
% Opracowanie przykładu: marzec 2014 r./WP/RR.

clc; clear; close all;

nb=2; mb=4;                        % liczba bitów przed- i za przecinkiem; 
q=2^(-mb);                         % krok kwantyzacji;
a1=-2^(nb-1):q:2^(nb-1)-q;         % możliwe wartości współczynnika a1 po kwantyzacji;
a2=-2^(nb-1):q:2^(nb-1)-q;         % możliwe wartości współczynnika a2 po kwantyzacji;

mm = 1;
zakres = 0;
for na1=1:length(a1),
    for na2=1:length(a2),
        
        a=[1, a1(na1), a2(na2)];    % wektor współczynników mianownika transmitancji filtra;
        pp = roots(a);              % oblicz pierwiastki (bieguny);
        
        if (max(abs(pp)) < 1-eps),  % sprawdź warunek stabilności (z zapasem równym zmiennej wbudowanej "eps");
            p(mm)= pp(1);
            mm = mm + 1;
            p(mm)= pp(2);
            mm = mm + 1;
        end;
        
    end;
end;

    figure(1);   h=gcf;   close(h); % przygotowanie rysunku dla "zplane(0,0,1)";
        zplane(0,0,1);    hold on;
        plot(p,'b.');

% KONIEC PRZYKŁADU 11.3.

Przykład 11.4

Przykład (plik przyklad_11_4.m) możliwych położeń bieguna sekcji pierwszego rzędu, mającego tylko jeden współczynnik zespolony w formacie Qm.n, przy kwantyzacji 7-bitowej.
% Przykład 11.4:
% m-plik: przyklad_11_4.m
%
% Cyfrowe przetwarzanie sygnałów. Podstawy, multimedia, transmisja. PWN, Warszawa, 2014.
% Rozdział 11. Podstawy arytmetyki stałoprzecinkowej. 
% Autorzy rozdziału:  Wojciech Półchłopek, Roman Rumian, Paweł Turcza.
%
% Więcej na stronie internetowej: http://teledsp.kt.agh.edu.pl
%
% Opracowanie przykładu: kwiecien 2014 r./WP/RR.

clc; clear; close all;

mb=5;                    % liczba bitów za przecinkiem (przed przecinkiem z założenia jest 1 bit);
q=2^(-mb);
Re_a1=-1:q:1-q;          % wynikające z kwantyzacji możliwe wartości części rzeczywistej współczynnika a1;
Im_a1=-1:q:1-q;          % wynikające z kwantyzacji możliwe wartości części urojonej współczynnika a1;

mm = 1;
zakres = 0;
for n_Re=1:length(Re_a1),
    for n_Im=1:length(Im_a1),
        
        p0=Re_a1(n_Re)+i*Im_a1(n_Im);
        
        if (abs(p0) < 1-eps), % sprawdzanie warunku stabilności;
            p(mm)=p0; 
            mm = mm + 1;
        end;
        
    end;
end;

% rysowanie wyniku:
    figure(1);     h=gcf;   close(h);  % przygotowanie rysunku dla "zplane(0,0,1)";
        zplane(0,0,1);      hold on;   
        plot(p,'b.');

% KONIEC PRZYKŁADU 11.4.