5.5.1. Графические средства пакета Signal
Некоторые графические средства пакета Signal уже поминались ранее. К ним относятся, прежде всего, процедуры fregs и fregz, применение которых без выходных параметров приводит к построению в графическом окне (фигуре) графиков АЧХ и ФЧХ аналогового звена по заданным векторам коэффициентов числителя и знаменателя передаточной функции по Лапласу (для первой из них) либо цифрового фильтра (звена ) по коэффициентам его дискретной передаточной функции (для второй процедуры). Напомним, что общая форма вызова этих функций при выведении графиков такова:
fregs (b, a, n) или fregz (b, a)
При этом b и а представляют собой векторы коэффициентов числителя и знаменателя передаточной функции, а n задает число отсчетов в строящихся АЧХ и ФЧХ.
Пример применения функции fregs приведен на рис. 5.16, а функции fregz – на рис. 5.17. Из графиков видно, что:
первая процедура строит АЧХ в логарифмическом масштабе, а вторая – в децибелах;
частоты в первом случае откладываются в радианах в секунду и в логарифмическом масштабе, а во втором – в виде отношения к частоте Найквиста, в равномерном масштабе и в диапазоне от 0 до 1;
форма оформления графиков достаточно жесткая и не предусматривает возможности изменения размеров графиков, надписей по осям и вывода заголовка.
Некоторые процедуры расчета фильтров, такие как fircls, fircls1, cremez и maxflat предусматривают выведение соответствующих графических изображение некоторых параметров спроектированного фильтра, если в качестве последнего параметра при обращении к процедуре указан флаг `plots`.
Так, функция maxflat в этом случае выводит три графические зависимости:
АЧХ в пределах до частоты Найквиста в равномерном масштабе;
карту расположения нулей и полюсов в комплексной Z-плоскости;
частотный график групповой задержки фильтра.
[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)
то результатом ее работы будет поочередный вывод в одно графическое окно таких графиков:
Зависимости СПМ первого сигнала от нормализованной частоты (рис. 5.66); на графике появляются три кривые – кривая оценки усредненного значения СПМ на фиксированной частоте и две кривые с добавлением и вычитанием доверительного интервала на этой частоте.
После нажатия клавиши [Enter] прежние кривые исчезнут и на том же поле появятся три аналогичные кривые (рис. 5.67) для второго процесса Y(t).
Следующее нажатие [Enter] приведет (рис. 5.68) к появлению кривой зависимости модуля передаточной функции взаимной спектральной плотности указанных процессов от частоты.
Еще одно нажатие [Enter] приводит к появлению графика зависимости аргумента передаточной функции ВСП от частоты (рис. 5.69).
Последнее нажатие [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.
- Цифровая обработка сигналов (пакет Signal Processing Toolbox)
- 5.1. Формирование типовых процессов
- 5.1.1. Формирование отдельных импульсных процессов
- 5.1.2. Формирование колебаний
- 5.2.2. Формирование случайных процессов
- 5.3. Спектральный и статистический анализ
- 5.3.1. Основы спектрального (частотного) и статистического
- 5.3.2. Примеры спектрального анализа
- 5.3.3. Статистический анализ
- 5.4. Проектирование фильтров
- 5.4.1. Формы представления фильтров и их преобразования
- 5.4.2. Разработка аналоговых фильтров
- 5.4.3. Проектирование цифровых бих-фильтров
- 5.4.4. Проектирование ких-фильтров
- 5.5 Графические и интерактивные средства
- 5.5.1. Графические средства пакета Signal
- 5.5.2. Интерактивная оболочка spTool