,
при этом z – вектор нулей, p – вектор полюсов, k - усиление.
Для перехода от полюсно - нулевого представления непрерывной системы к передаточной функции служит преобразование
.
Функция
выполняет разложение на простые дроби передаточной функции, представленной в виде отношения двух полиномов. Здесь вычеты запоминаются в векторе r, полюсы – в векторе p, усиление – в k. Формат [B, A]= residue(z, p, k) с тремя входными аргументами и двумя выходными выполняет преобразование системы в виде полюсно-нулевого представления в передаточную функцию.
Построение переходной характеристики (step response) системы может быть осуществлено вводом
,
аналогично строится график импульсной характеристики (impulse response) системы
.
Для определения отклика (выхода) системы на произвольный входной сигнал используется команда lsim(…).
Пример. Определим выходной сигнал системы с передаточной функцией
и входным сигналом .
Последовательность команд
>> n=[2 0]; % Числитель и знаменатель передаточной функции
>> d=[1 4 95];
>> t= linspace(0,5,301); % Задание временного интервала
>> u=cos(2*pi*t); % Входной сигнал
>> [y,x]=lsim(n, d, u, t); % Выходной сигнал
>> plot(t,y,'r',t,u,'k');
>> xlabel('Time, sec');
>> ylabel('Amplitude');
Графики входного и выходного сигналов
Рис.14.
Частотные характеристики и их графики
MATLAB-функции для вычисления и построения графиков частотных характеристик:
fft(x) – вычисляет дискретное преобразование Фурье вектора x с помощью алгоритмов Быстрого Преобразования Фурье (БПФ)
ifft(x) – вычисляет обратное дискретное преобразование Фурье вектора x с использованием БПФ
fftshift – производит сдвиг преобразования fft из диапазона (0, 2π) в интервал (-π, π)
freqs(n,d) – вычисляет частотную характеристику (frequency response) непрерывной системы с передаточной функцией n(s) / d(s)
freqz(n,d) – вычисляет частотную характеристику (дискретной) системы с передаточной функцией n(z) / d(z)
bode(n,d) – строит Боде диаграмму непрерывной системы с системной функцией n(s) / d(s).
unwrap(P) – корректирует
фазовые углы элементов одномерного массива P при переходе
через значение π.
Пример построения частотной характеристики системы с передаточной функцией
B=[2 0];
A=[1 4 95];
[H,w]=freqs(B,A);
plot(w/2/pi, abs(H))
set(gca, 'FontName','Times New Roman Cyr','FontSize', 8)
title('Амплитудно - чаcтотная характериcтика')
xlabel('Чаcтота, Гц')
ylabel('Модуль')
Рис.15.
Пример построения диаграммы Боде и импульсной характеристики
Последовательность команд
» num=[2 0];
» den=[1 4 95];
» % Построение диаграммы полюсов и нулей
» figure(1)
» pzmap(num,den);
» % Диаграмма Боде
» figure(2);
» bode(num,den);
» % Импульсная характеристика
» figure(3);
» impulse(num,den);
Рис.16.
Функция fft() в задачах обработки сигналов применяется, возможно, чаще всех остальных. Она вычисляет дискретное преобразование Фурье (ДПФ) вектора x по выражению
,
при этом - длина вектора x.
Эта же функция с форматом
вычисляет n – точечное дискретное преобразование Фурье. Если , то недостающие элементы массива x дополняются нулями (zero pad). Если , то лишние элементы отбрасываются.
Функция x=ifft(X) вычисляет обратное ДПФ последовательности X. Функция x=ifft(X,n) вычисляет n – точечное обратное ДПФ.
Для вычисления функций fft() и ifft() применяются алгоритмы быстрого преобразования Фурье (БПФ). Этот алгоритм имеет максимальное быстродействие, когда длина последовательности x равна степени числа 2. Поэтому желательно использовать последовательности, длина которых равна степени числа 2.
Пример.
% Процедура вычисления и построения спектров
% сигнала с помощью функции fft()
N=128; % число точек
Ts=T/(N-1); % интервал отсчетов
t=0:Ts:T; % временной интервал
tau=2; % длительность импульса
x=rectpuls(t,tau); % генерирование прямоугольного импульса
figure(1);
subplot(311), plot(t,x), grid % график сигнала
set(gca,'FontName','Arial Cyr', 'FontSize',8)
title(' График сигнала')
Fmax=1/Ts; % максимальная частота
df=1/T; % частотное разрешение
f=-Fmax/2:df:Fmax/2;
X=fft(x,N); % БПФ сигнала
Xp=fftshift(X); % частотный сдвиг
A=abs(Xp);
subplot(312), plot(f,abs(Xp)*Ts), grid
set(gca,'FontName','Arial Cyr', 'FontSize',8)
title(' Амплитудный спектр сигнала')
%S=sinc(f*tau/2)*tau/2; % преобразование Фурье сигнала
% график
subplot(313), plot(f, angle(Xp)), grid
set(gca,'FontName','Arial Cyr', 'FontSize',8)
xlabel(' Частота, Гц')
title(' Фазовый спектр сигнала ')
Рис. 17
Анализ линейных дискретных систем
Свертка
Команда
y = conv(x, h) – вычисляет свертку последовательностей x и h. С помощью свертки вычисляется сигнал на выходе дискретной системы у с импульсной характеристикой h и входным сигналом x при нулевых начальных условиях.
[q, r] = deconv(z, x) – выполняет операцию, обратную свертке.
Пример
» n=0:10;
» x=ones(1,11);
» h=5*(0.4).^n-5*(0.02).^n;
» y=conv(x,h);
» y=y(1:length(n));
» stem(n,y)
Рис.18.
Команда conv может использоваться также для умножения полиномов, conv(a,b) - произведение полиномов, представляемых векторами коэффициентов a и b.
Передаточная функция дискретной системы
Выражение вида
представляется в MATLAB векторами коэффициентов полиномов числителя и знаменателя
num = [10 0];
den = [1 -0.6 0.07];
Команды dstep и dimpulse вычисляют соответственно переходную и импульсную характеристику системы
Пример.
» n=0:10;
» num=[10 0]; den=[1 -0.6 0.07];
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.