logo
Цифровая обработка сигналов

5.5.1. Графические средства пакета Signal

Некоторые графические средства пакета Signal уже поминались ранее. К ним относятся, прежде всего, процедуры fregs и fregz, применение которых без выходных параметров приводит к построению в графическом окне (фигуре) графиков АЧХ и ФЧХ аналогового звена по заданным векторам коэффициентов числителя и знаменателя передаточной функции по Лапласу (для первой из них) либо цифрового фильтра (звена ) по коэффициентам его дискретной передаточной функции (для второй процедуры). Напомним, что общая форма вызова этих функций при выведении графиков такова:

fregs (b, a, n) или fregz (b, a)

При этом b и а представляют собой векторы коэффициентов числителя и знаменателя передаточной функции, а n задает число отсчетов в строящихся АЧХ и ФЧХ.

Пример применения функции fregs приведен на рис. 5.16, а функции fregzна рис. 5.17. Из графиков видно, что:

Некоторые процедуры расчета фильтров, такие как fircls, fircls1, cremez и maxflat предусматривают выведение соответствующих графических изображение некоторых параметров спроектированного фильтра, если в качестве последнего параметра при обращении к процедуре указан флаг `plots`.

Так, функция maxflat в этом случае выводит три графические зависимости:

[b, a, b1, b2] = maxflat (10, 12, 0.5, `plots`)

приводит к появлению в графическом окне изображения, показанного на рис. 5.54.

При вызове функции fircls с этим флагом на график выводятся фрагменты АЧХ с максимальными отклонениями от требуемой АЧХ (рис. 5.55):

n = 30;

f = [0 0.2 0.6 0.8 1];

amp = [1 0 0.5 0];

up = [1.02 0.02 0.51 0.02];

lo = [0.98 -0.02 0.49 -0.02];

fircls (n, f, amp, up, lo, `plots`)

Аналогичные графики строятся и при вызове функции fircls1.

Отличие в том, что теперь графики не снабжены никаким текстом (рис. 5.56):

fircls1 (n, 0,5б 0,01б 0,01, `plots`)

Процедура cremez при таком обращении выводит следующие графики (в одном графическом окне): АЧХ, ФЧХ, зависимость погрешности по амплитуде от частоты и зависимость погрешности по фазе от частоты. Это продемонстрировано на рис. 5.57:

cremez (30, [0 0.5 0.6 0.8 0.9 1], `bandpass`, `plots`)

В пакете Signal имеются еще три важные для инженера графические процедуры: grpdelay, impz и zplane. Первая строит график группового времени замедления (ГВЗ) от частоты, вторая – импульсную характеристику заданного фильтра, а третья отображает на комплексной Z-плоскости положение нулей и полюсов фильтра.

Рассмотрим в качестве примера применение этих процедур к БИХ-фильтру, созданному процедурой maxflat:

[b, a] = maxflat (10, 2, 0.5);

grpdelay (b, a, 128)

Результат применения функции grpdelay приведен на рис. 5.58.

Применяя процедуру impz к тому же фильтру:

impz (b, a)

получим график импульсной дискретной характеристики фильтра, изображенный на рис. 5.59.

Использование процедуры zplane для этого фильтра:

zplane (b, a)

приводит к построению графика, показанного на рис. 5.60.

Рассмотрим применение некоторых графических функций на примере двух коррелированных случайных процессов. Для этого вначале сформируем эти процессы:

Ts=0.01; T=100; % Задание параметров процесса

t=0 : Ts : T;

x1=randn(l, length(t)); % Формирование белого шума

% Расчет параметров формирующего фильтра

om0=2*pi; dz=0.05; A=1; oms=om0*Ts;

a(1)=1+2*dz*oms+oms^2;

a(2)=-2*(1+dz*oms);

a(3)=1;

b(1)=A*oms^2;

% Формирование «профильтрованного процесса»

y1=filter (b, a, x1);

% Построение графика процесса

subplot (3, 1, 1)

plot(t, y1), grid, set (gca, `FontName`, `Arial

Cyr`, `FontSize`, 8),

title (`Процесс на выходе фильтра (TO=1; dz=0.05,

Ts=0.01)`);

ylabel (`Y1(t)`)

% Расчет параметров первого звена

om0=2*pi*0,20; dz=0.05; A=1; oms=om0*Ts;

a1(1)=1+2*dz*oms+oms^2;

a1(2)=-2*(1+dz*oms);

a1(3)=1;

b1(1)=A*oms^2;

% Формирование «первого» процесса

x=filter (b1, a1, y1);

% Построение графика первого процесса

subplot (3, 1, 2)

plot(t, x), grid, set (gca, `FontName`, `Arial Cyr`, `FontSize`, 8),

title (`Первый случайный процесс (TO=5; dz=0.05, Ts=0.01)`);

%xlabel (`Время (с)`)

ylabel (`Y1(t)`)

% Расчет параметров второго звена

om0=2*pi*0.5; dz=0.05; A=1; oms=om0*Ts;

a2(1)=1+2*dz*oms+oms^2;

a2(2)=-2*(1+dz*oms);

a2(3)=1;

b2(1)=A*oms^2;

% Формирование второго процесса

y=filter (b2, a2, y1);

% Построение графика второго процесса

subplot (3, 1, 3)

plot(t, y), grid, set (gca, `FontName`, `Arial Cyr`, `FontSize`, 8),

title (`Второй случайный процесс (TO=2; dz=0.05, Ts=0.01)`);

xlabel (`Время (с)`)

ylabel (`Y1(t)`)

Графики порождающего процесса и двух процессов, производных от него, приведены на рис. 5.61.

Представление графика длинного процесса в виде совокупности нескольких фрагментов меньшей длины по аргументу можно осуществить меньшей длины по аргументу можно осуществить при помощи процедуры strips путем такого обращения к ней:

strips (x, sd, Fs, scale)

где х – вектор значений выводимой на график функции, sd – параметр, задающий в секундах длину одного фрагмента по аргументу, Fs – значение частоты дискретизации, scale – масштаб по вертикальной оси.

В качестве примера выведем график порождающего случайного процесса, разбивая его на отдельные фрагменты по 20 секунд и задавая диапазон изменения значения функции в каждом фрагменте от -2 до 2:

strips (y1, 20, 100, 2)

grid; title (Применение процедуры strips для вывода Y1(t));

xlabel (`Время, с`)

На рис. 5.62 представлен результат.

Теперь познакомимся с графическими процедурами статистической обработки процессов. Ранее (разд. 5.3) была описана функция psd, которая, если не указывать выходных параметров выводит в графическое окно график спектральной плотности мощности (рис. 5.42). Аналогичный график зависимости модуля взаимной спектральной плотности двух сигналов от частоты строит процедура csd если обратиться к ней таки образом:

csd(x, y, nfft, Fs)

Здесь х и у – заданные последовательности отсчетов двух сигналов, nfft - число отсчетов, по которым вычисляется взаимная спектральная плотность, Fs – частота дискретизации этих сигналов.

Применим функцию psd к случайному сигналу X(t), а процедуру csdдля нахождения взаимной спектральной плотности сигналов X(t) и Y(t). Результаты приведены соответственно на рис. 5.63 и 5.64.

psd (x, 10000, 100); title(`Применение процедуры PSD…

к процессу X(t)`);

ylabel (`Спектральная плотность); xlabel (`Частота, Гц`)

сsd (x, у, 10000, 100); title(`Применение процедуры СPSD…

к процессам X(t) и Y(t)`);

ylabel (`Взаимная СП`); xlabel (`Частота, Гц`)

Процедура cohere при обращении:

cohere (x, y, nfft, Fs)

вычисляет и выводит график от частоты квадрата модуля функции когерентности сигналов X(t) и Y(t), вычисленного по nfft точкам, заданным с частотой дискретизации Fs. Применяя эту процедуру л сформированным процессам, получим картину, представленную на рис. 5.65:

cohere (x, y, 10000, 100)

Ознакомимся с процедурой spectrum, которая выполняет спектральный анализ двух процессов X(t) и Y(t). Обращение:

P = soectrum (x, y)

приводит к вычислению матрицы Р, состоящей из восьми столбцов:

P = [Pxx, Pyy, Pxy, Txy, Cxy, Pxxc, Pyyc, Pxyc]

где Pxx – вектор-столбец, содержащий оценку СПМ процесса Х; Pyy – вектор-столбец, содержащий оценку СПМ процесса Y, Pxy– вектор взаимной спектральной плотности процессов X и Y; Txy – комплексная передаточная функция: Txy= Pxy./ Pxx; Cxy - функция когерентности, Cxy = ((abs(Pxy)).^2)./( Pxx* Pyy); Pxxc, Pyyc, Pxyc –векторы, содержащие доверительные интервалы для оценок Pxx, Pyy и Pxy.

Если эту функцию вызвать без выходных параметров?

spectrum (x, y)

то результатом ее работы будет поочередный вывод в одно графическое окно таких графиков:

  1. Зависимости СПМ первого сигнала от нормализованной частоты (рис. 5.66); на графике появляются три кривые – кривая оценки усредненного значения СПМ на фиксированной частоте и две кривые с добавлением и вычитанием доверительного интервала на этой частоте.

  2. После нажатия клавиши [Enter] прежние кривые исчезнут и на том же поле появятся три аналогичные кривые (рис. 5.67) для второго процесса Y(t).

  3. Следующее нажатие [Enter] приведет (рис. 5.68) к появлению кривой зависимости модуля передаточной функции взаимной спектральной плотности указанных процессов от частоты.

  4. Еще одно нажатие [Enter] приводит к появлению графика зависимости аргумента передаточной функции ВСП от частоты (рис. 5.69).

  5. Последнее нажатие [Enter] вызовет появление в поле графика функции когерентности (рис. 5.70).

Для построения спектрограммы процесса в MatLAB предусмотрена процедура specgram.

Примечание _____________________________________________________________

Спектрограммой называется зависимость амплитуды вычисленного в окне ДПФ (дискретного преобразования Фурье) от момента времени, определяющего положение этого окна.

_________________________________________________________________________________________________________________

Для примера применим эту процедуру к сформированному выше процессу X(t):

specgram (x, 10000, 100)

В результате получаем в графическом окне картину, изображенную на рис. 5.71.

Общий вид обращения к процедуре specgram напоминает обращение к процедуре psd:

specgram (x, nfft, Fs)

где х – вектор процесса, спектрограмма которого вычисляется, nfft - количество точек этого процесса, участвующих в вычислениях и Fs – частота дискретизации процесса.

Наконец, графическое представление имеет и процедура tfe, которая оценивает параметры и строит график АЧХ передаточной функции звена, на вход которого подан процесс, представленный первым вектором в обращении к процедуре, а на выходе получен процесс, представленный вторым вектором. В целом, чтобы получить график АЧХ, нужно обратиться таким образом:

tfe = (x, y, nfft, Fs)

где x – вектор значений входного процесса, y – вектор выходного процесса, nfft - количество обрабатываемых точек (элементов указанных векторов), Fs – частота дискретизации.

Применяя процедуру к ранее сформированным процессам X(t) и Y(t):

tfe = (x, y, 10000, 100)

получим график, изображенный на рис. 5.72.