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.