Курс лекций дисциплины вариативной части математического и естественнонаучного цикла (855805), страница 7
Текст из файла (страница 7)
Ширина этой полосы называется эффективной шириной спектраслучайного процесса: эф1 ∞=∫ W ()d .Wmax −∞(*) Причем величины τк и Δωэф связаны соотношением неопределенности: эф к ≈ 2 .1.8.8 Белый шумБелый шум — стационарный сигнал, спектральные составляющиекоторого равномерно распределены по всему диапазону частот, т.е. W(ω)=W0=const.ПоэтомукорреляционнаяR( ) =вфункциясоответствиистеоремойбелогошумаестьВинера-Хинчинадельтафункция:W0 ∞ j∫ e d = W0 ( ) ,2 0т.е. дисперсия (средняя мощность) белого шума бесконечно велика, другимисловами любые два значения сигнала некоррелированны при сколь угодноамплитудамалом τ. На рис.
1.28 представлена реализация белого шума.времяРис. 1.28 – Реализация белого шума во временной области50Белый шум является абстрактной моделью. В природе и технике невстречается, однако под категорию белых шумов попадают любые шумы,спектральная плотность которых одинакова (или слабо отличается, в этомслучае говорят об окрашенном шуме) в рассматриваемом диапазоне частот(говорят: если эффективная полоса частот шума превышает полосу частотустройства, тогда для этого устройства шум удобно считать белым).Например, рассмотрим единичный импульс длительностью 1 мкс. Тогда,выполнив преобразование Фурье, получим огибающую спектра, описываемуюмодулем sinc функцией, первый ноль которой наблюдается на частоте 1 МГц –рис.1.29. Следовательно, для устройства с полосой частот не превышающей, кпримеру, 20 кГц, спектр данного импульса практически постоянен, т.е.
егоможно считать моделью белого шума.f, кГцf, МГцРис. 1.29 – Огибающая спектра импульса с длительностью 1 мкс511.9 Программная среда MatlabПрограммныйразличногопакетназначенияПрименительнокMatlabсистемцифровойипредназначенпроведенияобработкедлямоделированиячисленныхсигналовпакетрасчетов.представляетвозможности моделирования цифровых систем обработки информации,проектирования блоков алгоритмов, вычисления характеристик и параметровалгоритмов.интерактивногоПроцессмоделированиявизуальногопрограммирования насредстваобеспечивается–матричном языкеSimulinkMatlabилипосредствомс(имеетсяпомощьювстроенныйкомпилятор).
Сам язык является высокоуровневым языком, приспособленнымдля выполнения матричных и векторных операций, в том числе с реализациейсложных распространенных алгоритмов: триангуляция и обращение матриц,решение систем уравнений, методы оптимизации, различные типовыепреобразования и т.п., а также реализацией графического интерфейса дляпредставления данных и результатов.Как любой язык программирования, Matlab включает операторыуправления выполнением программы и собственно операторы, функцииосуществляющие вычисления, преобразования данных.Вид программной строки (символ % означает комментарий, всякаязапись после этого символа игнорируется):<оператор>; %комментарий<переменная>=<значение, вычисления или функция с набором параметров>;Оператор цикла.for <имя переменной>=<начальное значение>:<конечное значение><тело цикла>; %переменная получает приращение от нач.
до кон. значения, шаг 1end; % число повторений тела цикла =(кон. значение – нач. значение +1)for <имя переменной>=< нач. значение >:<шаг>:<конеч. значение><тело цикла>; переменная изменяется от нач. до кон. значения с заданным шагомend;Условный оператор.52if (<условие>)<операторы, выполняемые если условие выполняется>;else<операторы, выполняемые если условие не выполняется>;end;Пример 1.5Вычислим сумму ряда: S = ∑ 2nn=2S=0; % инициализация переменной, присвоение начального значенияfor n=2:5 % переменная n последовательно будет равна 2, 3, 4, 5S=S+2*n;end; % S – содержит результатРабота с массивами (векторами, матрицами)Инициализация массива:x=[1 2 3 4]; % одномерный массив – вектор (строка) с координатами (1,2,3,4)1 2 3 a=[1 2 3; 4 5 6]; % двухмерный массив – матрица a = 4 5 6t=[1:3:11]; % задает вектор (строка) t=[1 4 7 10]t=(1:3:11); %тоже самое: t=[1 4 7 10]t1=t’; %транспонирование, например: преобразуем строку в столбецНапример, альтернативная форма программы примера 1:n=(2:1:5); % эквивалентно n=[2 3 4 5]S=2*sum(n); % операция SUM возвращает сумму элементов вектора (массива)Обращение к элементам массива (индексы нумеруются с единицы)q=x(2); % вторая координата вектора: q=2w=a(2,1); % первый индекс – строка, второй – столбец: w=4b=a(1, :); % первая строка матрицы a: b=[1 2 3]с=(2, 2:3); % элементы 2 и 3 столбцов во второй строке: c=[5 6](*) команды присвоения, изменения элемента массива – аналогично.53Пример 2.Вычислить скалярное произведение векторов x1=(1; 2) и x2=(3; 5).По определению y = ∑ x1 (k )x2 (k ) , тогда y = 1 ⋅ 3 + 2 ⋅ 5 = 13 .kx1=[1 2]; % инициализация массивовx2=[3 5];y=0; % процедура вычисления скалярного произведенияfor j=1:2y=y+x1[j]*x2[j];end;Альтернативные формы программы с использованием матричной алгебры:a) y=x1*x2’; % умножить строку на столбец есть числоb) y=sum(x1.*x2); %поэлементно перемножить строки и сложить результаты% операции поэлементного умножения, деления, возведения в степень предваряютсязнаком точки: .* ./ .^c) Программный код процедуры эквивалентен встроенной в Matlab функции:y=dot(x1,x2); % длины векторов должны быть одинаковымиПример 3.Реализовать линейную свертку векторов (сигналов) h(k) длины K и входногосигнала x(n).y=0;for j=1:Km=n-j+1;if (m>0)y=y+h(j)*x(m); % (*)end;end;% y – содержит значение выходного отсчета y(n)(*) необходимо следить, чтобы индекс массива был положительным, впротивном случае необходимо дополнить нулями вектор x (вставить в массивслева K-1 нулей).Функция, встроенная в Matlab: y=conv(h,x); %len(y)=len(h)+len(x)-154Пример 4.Рассчитать спектр сигнала: x(n ) = sin (2f 0 kt s ) , f0=50 Гц, ts-1=800 Гцclear; % очистка переменных, освобождение памятиf0=50; % частота сигналаfs=800; % частота дискретизацииN=128; % длина ДПФx=sin(2*pi*f0/fs*(0:1:N-1)); % массив отсчетов заданного сигналаy=fft(x,N); % расчет комплексного спектра сигналаyy=2/N*abs(y); % расчет модуля спектра% yy – амплитудный спектр сигнала, частотный отсчет 50/800*128=8 (нумерация отсчетовсигнала – с нуля) соответствует заданной гармонике: yy(k=9)=1 (нумерация отсчетовв массиве – с единицы), все остальные отсчеты при 1≤k≤64, k≠9: yy(k)=0.Отображение результата.
Команда plot.Для построения зависимостей (в виде графиков, диаграмм) применяетсякоманда plot(x,y,<spec>) – для представления результатов на плоскости иplot3(x,y,z,<spec>) – для представления результатов в объеме.<spec> - область входных данных команд, устанавливающая атрибуты кривой,такие как цвет, тип линии, цвет и тип маркеров и т.п.В общем случае для отображения графика необходимо иметь самиданные в виде массивов x – координаты по оси абсцисс, y – координаты по осиординат (естественно длины массивов x и y одинаковы, и каждая пара (x,y)задает точку на плоскости):% дополнение к примеру 4figure; %показать окно области построенияgrid on; %включить сеткуhold on; %показывать на одной области построения несколько графиков% отобразим спектр примера 4, по оси абсцисс номера отсчетовplot((0:1:N-1),yy, 'r'); %построить график красным цветом% отобразим спектр примера 4, по оси абсцисс значения частотыplot((0:1:63)/128*fs,yy(1:64), 'b'); %построить половину графика синим цветом55Математические функцииabs(x) – модуль числа x (для комплексного значения – длина вектора)sqrt(x) – вычисляет квадратный корень числа xfix(x) – выполняет округление числа x методом отбрасывания дробной частиround(x) – округление числа x до ближайшего целогоsin(x) – вычисляет синус угла x (задается в радианах)cos(x) – вычисляет косинус угла x (задается в радианах)exp(x) – вычисляет значение функции exlog(x) – вычисляет значение функции ln(x)sinc(x) – вычисляет значение функцииsin( x)xФункции формирования сигналовy=rectpuls(t,w) – формирует одиночный прямоугольный импульс с единичнойамплитудой (t – вектор значений времени, w – ширина1, − 0.5w ≤ t < 0.5wимпульса): y = 0, t < −0.5w, t ≥ 0.5wy=tripuls(t,w,s) – формирует одиночный треугольный импульс с единичнойамплитудой (t – вектор значений времени, w – длительностьимпульса, s – параметр асимметрии: положение максимума 2t + w w( s + 1) , − 0.5w ≤ t < 0.5ws 2t − w0.5ws, -1≤s≤1): y = , 0.5ws ≤ t < 0.5ww(s−1)0, t > 0.5wy=square(t,d) – формирует периодический сигнал прямоугольной формы (t –вектор значений времени, d – коэффициент заполнения (впроцентах), равный отношению длительности импульса кпериоду), y=1 в интервале импульса и y=-1 в интервале паузы.y=sawtooth(t,d) – формирует периодический сигнал треугольной формы (t –вектор значений времени, d – длительность нарастания56сигнала от -1 до 1 и (1-d) – длительность спадания сигнала от1 до -1).y=randn(m,n) – формирует матрицу y – дискретный белый шум с нормальнымраспределением, m – число строк и n – число столбцов.y=wavread(‘имя файла’) – функция чтения данный из файла в формате wav[y,Fs,bit]= wavread(‘имя файла’) – прочитать файл и получить информацию очастоте дискретизации (Fs), количестве битна отсчет (bit)wavwrite(y,Fs,b,’имя файла’) – записать данные y в формате wav файла, Fs –частота дискретизации данных, b=8 или 16 –число бит на отсчет.57Раздел 2.