Авторы курса лекций Трухин Михаил Павлович, доцент кафедры теоретических основ радиотехники УГТУ-УПИ, Иванов Олег Юрьевич, ст. преп. кафедры теоретических основ радиотехники УГТУ-УПИ Екатеринбург 2007 Связи реальных сигналов и их моделей Различные формы представления одного и того же случайного процесса: а – дискретный СП; б – непрерывный СП а б Двумерная форма представления дискретного случайного процесса «Обрезанное» представление нестационарного СП Применение неравенства Чёбышева к описанию поведения СП Взаимные связи различных видов СП Получение реализации нормального белого шума в системе MATLAB: а – осциллограмма; б – гистограмма s = randn(1000, 1); plot(s) а hist(s, 20) б Преобразование некоррелированного набора данных в коррелированный набор: а – иллюстрация связей между данными; б – структура алгоритма Текст М-файла вычисления коэффициентов формирующего фильтра по АКФ function b=firc(r) % Вычисление КИХ-коэффициентов % по отсчётам АКФ % b=firc(r) % b - коэффициенты КИХ-фильтра % r - правые отсчёты АКФ R(t), % r(1)=1 соответствует R(0) if r(1)= = 0 warning('Первый элемент не ... должен быть равен 0'); return else r=r/r(1); end if r(1)<= max(abs(r(2:end))) warning('КИХ-фильтр не может... быть построен для такой АКФ'); return end %Формирование и решение системы l=length(r); c=ones(1,l) /sqrt(l); b=ones(1,l); b=fsolve(@syst,c,optimset(... 'Display','off',... 'MaxIter',1000, ... 'TolFun',1e-8),r); b=b/max(b); function s=syst(c, r) l=length(r); for i=1:l x=0; for j=1:l-i+1 x=x+c(j)*c(j+i-1); end s(i)=x-r(i); end Использование СС-фильтра в качестве формирующего фильтра: а – графики СП на входе и выходе ФФ; б – сравнение заданной и модельной АКФ 4 1 3 0.8 2 0.6 1 -1 -2 ff 0.2 n(t) 0 x(t) -3 -0.2 -4 -5 0 R ( ) R() 0.4 0 10 20 30 а 40 50 60 -0.4 0 5 10 15 б 20 25 Использование СС-фильтра в качестве формирующего фильтра: в – текст программной модели N=1000; % Отсчёты R=[1.0000 0.2702 -0.1387...]; % Запись АКФ k=length(R); n=randn(N,1); % Белый шум b=firc(R); x=filter(b,1,n); % Выход ФФ plot(1:60,n(1:60),... 1:60,x(1:60)) % Вычисление реальной АКФ % в 20 точках Rff=xcorr(x,20); %Построение совместного графика plot(c(21:end)/max(c)) hold on plot(R) hold off Формирующий фильтр, созданный на основе отсчётов дискретной импульсной характеристики 3 2.5 АКФ модельная АКФ заданная 2 АКФ "белого шума" 1.5 1 0.5 0 0 5 10 15 S1=randn(1000,1); %Белый шум S2=filter(G,1,S1); % G - ИХ Ry=xcorr(S2, K)/N; Rx=xcorr(S1, K)/N; Rc=conv(G, fliplr(G)); stem(1:K,fliplr(Rc(1:K)), 'b') hold on stem(1:K,Ry(K+1:2*K),'r') bar(1:K,Rx(K+1:2*K),'g') hold off Формирование коррелированного набора данных в АР-фильтре: а – иллюстрация связей между данными; б – структура алгоритма Моделирование формирующего БИХ-фильтра N=10000; K=20; g=cos(2*pi*(0:K-1)/K).*... exp(-3*(0:K-1)/K); g1=fliplr(g); r=conv(g,g1); R=r(K:2*K-1)'; a=levinson(R,K-1); n=randn(N,1); x=filter(1, a, n); Rx1=xcorr(x, K)/N; Rx=Rx1(K+1:2*K); g=[R Rx] stem(g) Sigma=sqrt(sum((R-Rx).^ 2)) Формирование коррелированного набора данных в АРСС-фильтре: а – иллюстрация связей между данными; б – структура алгоритма Сравнение трёх вариантов моделей дискретных ФФ с прямоугольной АЧХ: а – графики АЧХ; б – скрипт-файл моделирования n1=50; n2=50; n3=10; f=linspace(0,1,20); m=[ones(1,10) zeros(1,10)]; b1=fir2(n1,f,m); b2=remez(n2,f,m); [b3,a3]=yulewalk(n3,f,m); w1=freqz(b1,1); w2=freqz(b2,1); w3=freqz(b3,a3); plot(linspace(0,1,512),... [abs(w1),abs(w2), abs(w3),... [ones(256,1);zeros(256,1)]]) Моделирование СП с равномерным распределением и заданной АКФ: а – М-функция модели; б – графики АКФ; в – скрипт-файл моделирования function y=Ravn1(N, R, a) % y = Ravn1(N, R, a) if nargin = = 2 a=1; elseif a<0 a = - a; elseif a = = 0 a = 1; end x = randn(N,1); R=3*R/a^2; Rn = 2*sin(pi/6*R); a1 = levinson(Rn, 8); xn = filter(1,a1,x); y=sqrt(2)*a*... (normcdf(xn,0,1) - 0.5); а 10 5 Заданная АКФ 0 Модельная АКФ -5 0 10 20 30 40 50 б K=50; a=5; Ry=a^2/3*cos(4*pi*(0:K-1)/K).*exp(-3*(0:K1)/K); y = Ravn1(1000, Ry, 5); plot(1:50,Ry) Rm=xcorr(y,50)/length(y); hold on, plot(1:50,Rm(51:100)),hold off в Результаты моделирования показательного СП: а – энергетический спектр; б – АКФ 1 1.2 0.9 1 0.8 0.7 0.8 Wy()=1/(1+2) 0.6 Ry()=exp(-||) 0.6 0.5 0.4 0.4 0.3 0.2 0.2 0 0.1 0 0 2 6 4 а 8 10 -0.2 0 0.2 0.4 0.6 б 0.8 1 Результаты моделирования показательного СП: в – скрипт-файл моделирования n1=50; tau=1; dt=0.1; K=5; f=linspace(0,1,20); R=exp(-f*tau/(2*dt)); a=levinson(R,K-1) w1=freqz(1,a); w=linspace(0,1,512)/dt; S=abs(w1).^2; w1=w*2^(1/4); S1=S/S(1); S2=(1./(1+w1.*w1))'; figure(1) plot(w,[S1 S2]) CKO1=std(S1-S2) n1=randn(1000,1); n2=randn(1000,1); x1=filter(1,a,n1); x2=filter(1,a,n2); y=x1.^2+x2.^2; Ry1=xcorr(y, mean(y), 20)... /length(y); Ry=Ry1(21:40); R1=exp(-f*tau/dt)'; R2=Ry/Ry(1); figure(2) plot(f,[R1 R2]) CKO2=std(R1-R2) Результаты моделирования релеевского СП с зависимыми отсчётами: а – АКФ; б – гистограмма 1 1200 0.9 Ry()=exp(-2/2) 0.8 f(y)=yexp(-y2/2) 1000 0.7 800 0.6 0.5 600 0.4 400 Rmod() 0.3 0.2 200 0.1 0 0 1 2 3 а 4 5 0 0 1 2 3 4 б 5 6 y Результаты моделирования релеевского СП с зависимыми отсчётами: в – М-файл модели; г – скрипт-файл моделирования function y = Relev1(N,R) % y = Relev1(N,R) if min(R) < 0 warning('АКФ задана неверно.'); return end sigma=sqrt(4*R(1)/(4-pi)); x=randn(N,2)/sigma; R1=R/R(1); R1=2*sqrt(2)*sqrt(sqrt(1+(4... -pi)/pi*R1)-1); R1=R1/R1(1); b1=firc(R1); xn=filter(b1,1,x); y = sqrt(xn(:,1).^2+xn(:,2).^2); в K=30; tau=linspace(0,5,K); Ry=exp(-tau.^2/2); y = Relev1(10000, Ry); plot(tau,Ry) Rm=xcorr(y-mean(y),K)/length(y); Rm=Rm/max(Rm); hold on plot(tau,Rm(K+1:2*K),'g') hold off г Структура генератора негауссовых ССП Генератор гауссового белого шума x Формирующий фильтр ФФ(b, a) n Нелинейный преобразователь y = f(n) y а – М-функция вычисления АКФ ry ; б – иллюстрация совпадения расчётной и экспериментальной АКФ ry function ry = DwInt(rn) % ry = DwInt(rn) l=length(rn); for i=1:l if rn(i)==1 rn(i)=0.99; end ry(i)=dblquad(@IntEq,-3, 3,-3,3,[ ],[ ],rn(i))/(... 2*pi*sqrt(1-rn(i)*rn(i))); end Результаты моделирования в примере 5.8: а – график ; б – сравнение АКФ релеевского СП а б Структурная схема двумерного формирующего фильтра (а) и примеры модулей коэффициентов передачи (б) |K(f)| 1 0.8 K11, K22 0.6 K12, K21 0.4 0.2 0 0 f 0.2 0.4 0.6 0.8 1 Результаты моделирования двумерного нормального СП: а - входная реализация x(t); б – выходная реализация без связей y2(t) 3 0.5 y1 y2 x1 x2 2 1 0 0 -1 -0.5 -2 -3 0 20 40 60 а 80 100 -1 0 20 40 60 б 80 100 Результаты моделирования двумерного нормального СП: в - выходная реализация со связями y1(t); г –совместный график реализаций y1(t) и y2(t) 0.5 0.5 y1 y2 0 0 -0.5 -0.5 -1 0 20 40 60 в 80 100 -1 0 20 40 60 г 80 100 Результаты моделирования двумерного нормального СП: д – М-файл и скрипт-файл моделирования function y=ff2dim(A11,B11,A12,B12,A21,B21,A22,B22, x) % y=ff2dim(A11,B11,A12,B12,A21,B21,A22,B22, x) y1=filter(B11,A11,x(:,1))+filter(B12,A12,x(:,2)); y2=filter(B21,A21,x(:,1))+filter(B22,A22,x(:,2)); y=[y1 y2]; x=randn(100,2); A11=[1]; B=[0.0001 0.0050 0.0292 0.0830 0.1452]; B11=[B 0.1733 fliplr(B)]; A12=[2]; B=[-0.0017 -0.0027 0.0081 0.0552 -0.2228]; B12=[B 0.3257 fliplr(B)]; A21=[2]; B21=B12; A22=[1]; B22=B11; y1=ff2dim(A11,B11,A12,B12,A21,B21,A22,B22, x); B12=[0]; B21=[0]; y2=ff2dim(A11,B11,A12,B12,A21,B21,A22,B22, x); д Результаты моделирования в примере 5.7: а – графики треугольного распределения; б – М-файл ФПВ f(x) 1 F(x) f(x) 0.8 0.6 0.4 0.2 0 -1.5 x -1 -0.5 а 0 0.5 1 1.5 function y = Treugf(x,g) % y = Treugf(x,g) G=g(2)-g(1); G2=2/G; for i=1:length(x) x1=x(i); if x1 < g(1) y(i)=0; elseif x1 < 0 y(i)=G2*(1-x1/g(1)); elseif x1 < g(2) y(i)=G2*(1-x1/g(2)); else y(i)=0; end end б Результаты моделирования в примере 5.7: в – гистограмма реализации; г – М-файл генератора чисел с треугольным распределением function y2=Per12(y1) % y2=Per12(y1) % g(1) = -1 % g(2) = 1 r=2*(rand(1)-0.5); if r < 0 y2=y1+sqrt(-r)-1; else y2=y1+1-sqrt(r); end 1000 N=10000 900 800 700 600 500 400 300 200 100 0 -1 -0.5 0 в 0.5 1 г Результаты моделирования в примере 5.7: д – две реализации марковского процесса; е – М-функция моделирования 40 % Начальное значение y(1)=2*(rand(1)-0.5); % Переход к следующему % значению СП for t=2:10000 y(t)=Per12(y(t-1)); 30 y1(t) 20 10 0 -10 end -20 y2(t) -30 -40 0 t 2000 4000 д 6000 8000 10000 е Стационарный процесс, удовлетворяющий условию марковости 3 rand randn 2 1 0 -1 -2 -3 0 20 end Конец СП Начало СП 40 9960 9980 y1(1)=rand(1); y2(1)=randn(1); for t=2:10000 y1(t)=-sign(y1(t... -1))*rand(1); y2(t)=-sign(y2(t... -1))*randn(1); 10000 Результаты моделирования в примере 5.8: а – график реализации; б – гистограмма вероятностей состояний цепи а б Результаты моделирования в примере 5.8: в – М-файл модели марковской цепи function Y=Markow(W, n, y0, W0) % Y=Markow(W, n, y0, W0) % y0 - начальное состояние % W - матрица переходов % n - количество шагов % W0 - вектор перехода от y0 l = size(W,2); if nargin < = 3 W0 = ones(1,l)/l; elseif nargin < = 2 y0 = 1; elseif nargin == 1 n = 10; end Y(1) = y0; Y(2) = stept(W0); for i = 3:n Y(i) = stept(W(Y(i-1),:)); end function s = stept(Pr) % Pr - вектор вероятностей l = length(Pr); x = rand(1); h = 0; for i = 1:l h = h+Pr(i); if x < h s = i; break end end Моделирование процесса с независимыми приращениями: а – четыре реализации при; б – скипт-файл моделирования а function y = unimark(n,y0,g) % y1 - выход % y0 - вход % g=[gmin gmax] - границы if nargin = = 1 g=[-1 1]; y0=rand(1); elseif nargin = = 2 g=[-1 1]; end G=g(2)-g(1); y(1)=y0; for i=2:n r=rand(1); y(i)=y(i-1)+g(1)+G*r; end б Простейшая модель сообщения: а – схемная реализация; б – энергетический спектр непрерывной модели а б Простейшая модель сообщения: в – М-функция дискретной модели; г – результаты моделирования function x=Model1(alpha, n) % x=Model1(alpha, n) l=length(n); a1=1-alpha; x=zeros(1,l); for i=2:l x(i)=a1*x(i-1)+alpha*n(i); end в г Модель речевого сообщения: а – схемная реализация; б – энергетический спектр непрерывной модели а б Модель речевого сообщения: в – М-функция дискретной модели; г – результаты моделирования function x=Model2(alpha1, . . . alpha2,n) % x=Model2(alpha1,alpha2,n) l=length(n); a1=1-alpha1; a2=1-alpha2; x=zeros(2,l); for i=2:l n1=alpha1*n(i); x(1,i)=a1*x(1,i-1)+n1; x(2,i)=a2*x(2,i-1)- . . . alpha1*x(1,i-1)+n1; end в г Модель процесса в телеметрии: а – схемная реализация; б – энергетический спектр непрерывной модели а б Модель процесса в телеметрии: в – М-функция дискретной модели; г – результаты моделирования function x=Model3(alpha1, . . . alpha2,n) % x=Model3(alpha1,alpha2,n) l=length(n); a1=1-alpha1; a2=1-alpha2; x=zeros(2,l); for i=2:l x(1,i)=a1*x(1,i-1)+ . . . alpha1*n(i); x(2,i)=a2*x(2,i-1)- . . . alpha1*x(1,i-1); end в г Модель узкополосного процесса: а – схемная реализация; б – энергетический спектр схемной и дискретной модели а б Модель узкополосного процесса: в – М-функция дискретной модели; г – результаты моделирования function x=Model4(alpha,omega,n) % x=Model4(alpha,omega,n) l=length(n); om2=omega^2; a2=1-2*alpha; x=zeros(2,l); for i=2:l x(1,i)=a2*x(1,i-1)- . . . om2*x(2,i-1) +om2*n(i); x(2,i)=x(2,i-1)+x(1,i); end в г Информационное обеспечение лекции Литература по теме 1. Перегудов Ф.И. Основы системного анализа: учебник /Ф.И. Перегудов, Ф.П. Тарасенко. 2-е изд Томск: Изд-во НТЛ, 1997. 367 с. 2. Советов Б.Я. Моделирование систем: уч. пособие /Б.Я. Советов, С.А. Яковлев. М.: Высш. шк., 1998. 319 с. 3. Поршнев С.В. MATLAB 7. Основы работы и программирования: учебник / С.В. Поршнев. М.: ООО «Бином-Пресс», 2006. 320 с. 4. Быков В.В. Цифровое моделирование в статистической радиотехнике /В.В. Быков. М.: Сов. радио, 1971. 328 с. 5. Сергиенко А.Б. Цифровая обработка сигналов /А.Б. Сергиенко. СПб.: Питер, 2002. 608 с. 6. Кельтон В. Имитационное моделирование. КлассикаCS. /В. Кельтон, А.Лоу. СПб.: Питер; Киев:BHV, 2004. 847 с.