Учебное пособие для студентов высших учебных заведений
Скачать 5.41 Mb.
|
function plot(p) % POLYNOM/PLOT построение графика полинома "р" p=polynom(p); r= max(abs(roots(p.c))); x=(-1.1:0.01:1.1)*r; y= polyval(p.c,x); plot(x,y); grid; title(char(p)); xlabel('X'); % Завершение POLYNOM/PLOT - метод rdivide(p,xr) осуществляет деление полинома p на число xr: function r = rdivide(p,xr) % POLYNOM/RDIVIDE Правое деление полинома на число: r = p / xr p = polynom(p); r. c = p. c/xr; r = polynom(r. c); % Завершение POLYNOM/RDIVIDE Проверим действие некоторых из созданных методов: >> Pol = polynom([1 2 3 4 5]) Pol = x^4 + 2*x^3 + 3*x^2 + 4*x + 5; >> v = roots(Pol) v = 0.2878 + 1.4161i 0.2878 - 1.4161i -1. 2878 + 0. 8579i -1. 2878 - 0. 8579и >> plot(Pol) Результат представлен на рис. 3.2. Чтобы получить перечень всех созданных методов класса, следует восполь- зоваться командой methods <имя класса>. Например: >> methods polynom Methods for class polynom: char display minus mtimes plus polynom0 rdivide times diff double mrdivide plot polynom polyval roots 4.4. Создание методов нового класса 187 Рис. 3.2 Теперь мы имеем мощный вычислительный аппарат для работы с полино- мами. Развивая его дальше, можно создать новый класс более сложных объектов - класс рациональных передаточных функций, которые являются конструкцией в виде дроби, числителем и знаменателем которой являются полиномы. Для этого класса также можно определить важные для инженера операции сложения пере- даточных функций (которое соответствует параллельному соединению звеньев с заданными передаточными функциями), умножения (ему соответствует последо- вательное соединение звеньев) и многие другие, отвечающие определенным ти- пам соединений звеньев. Примерно на такой основе создан, к примеру, класс tf (Transfer Function), используемый в пакете CONTROL. 5.1. Формирование типовых процессов 188 5. Цифровая обработка сигналов (пакет Signal Processing Toolbox) Цифровая обработка сигналов традиционно включает в себя создание средств численного преобразования массива заданного (измеренного в дискретные моменты времени) процесса изменения некоторой непрерывной физической величины с целью извлечения из него полезной информации о другой физической величине, содержащейся в измеренном сигнале. Общая схема образования измеряемого сигнала и процесса его преобра- зования в целях получения информаци о величине, которая должна быть измерена, представлена на рис. 5.1. Рис. 5.1. Физическая величина, являющаяся полезной (несущей в себе необходи-мую информацию), редко имеет такую физическую форму, что может быть непосредственно измеренной. Обычно она представляет лишь некоторую составляющую (сторону, часть, черту) некоторой другой физической величины, которая может быть непосредственно измерена. Связь между этими двумя вели- чинами обозначим введением звена, которое назовем "первичным преобразователем" (ПП). Обычно закон преобразования известен заранее, иначе вос-становить информационную составляющую в дальнейшем было бы невозможным. Первичный преобразователь вносит зависимость сигнала, который может быть измерен, от некоторых других физических величин. Вследствие этого выходная его величина содержит, кроме полезной информа-ционной составляющей, другие, вредные составляющие или черты, искажа-ющие полезную информацию. И, хотя зависимость выхода ПП от этих других величин 5.1. Формирование типовых процессов 189 также известна, однако вследствие неконтролируемого возможного изменения последних со временем, часто трудно спрогнозировать их влияние на искажение полезной составляющей. Назовем вносимую ПП вредную составляющую шумом ПП. Пусть образованная таким образом непосредственно измеряемая величина измеряется некоторым измерителем. Любой реальный измеритель вносит собственные искажения в измеряемую величину и дополнительные зависимости от некоторых других физических величин, не являющихся объектом измерения. Назовем эти искажения шумами измерителя. Не ограничивая общности, будем полагать, что выходной величиной измерителя является электрический сигнал (измеренная величина), который можно в дальнейшем довольно просто пребразовывать электрическими устройствами. Для осуществления цифровой обработки измеренная величина должна быть преобразована в дискретную форму при помощи специального устрой-ства, которое содержит экстраполятор и аналого-цифровой преобразователь (АЦП). Первый производит фиксацию отдельного текущего значения измерен-ной величины в отдельные моменты времени через определенный постоянный промежуток времени, называемый дискретом времени. Второй переводит это значение в цифровую форму, которая позволяет в дальнейшем осуществлять преобразования с помощью цифровых ЭВМ. Хотя оба устройства могут вносить при таких преобразованиях собственные искажения в выходной (дискретный) сигнал, однако ими обычно пренебрегают, так как в большинстве случаев эти дополнительные искажения значительно меньше шумов ПП и измерителя. Чтобы на основе полученного дискретизированного сигнала получить полезный сигнал, нужно рассчитать и создать устройство (программу для ЭВМ), которое осуществляло бы такие преобразования входного дискретного во времени сигнала, чтобы на его выходе искажения, внесенные шумами ПП и измерителя были минимизированы в некотором смысле. Это устройство называют фильтром. В общем случае создание (проектирование) фильтра является задачей неопределенной, которая конкретизируется лишь на основе предварительно полученных знаний о закономерности образования измеряемой величины (модели ПП), о модели образования измеренной величины из измеряемой (модели измерителя), о характеристиках изменения во времени вредных физических величин, влияющих на образование измеряемой и измеренной величин, и закономерностей их влияния на искажение полезной информации. Так как модели ПП и измерителя могут быть весьма разнообразными, традиционно задачу фильтрации решают только для некоторых наиболее распространенных на практике видов таких моделей, чаще всего - для линейных моделей. В общем случае процесс создания фильтра распадается на такие этапы: - на основе априорной информации о моделях ПП и измерителя и о характеристиках шумов, а также о задачах, которые должен решать фильтр, 5.1. Формирование типовых процессов 190 выбирается некоторый тип фильтра из известных, теория проектирования которых разработана; - на основе конкретных числовых данных рассчитываются числовые характеристики выбранного типа фильтра (создается конкретный фильтр); - проверяется эффективность выполнения разработанным фильтром поставленной перед ним задачи; для этого необходимо сымитировать на ЭВМ дискретный сигнал, содержащий полезную (информационную) составляющую с наложенными на нее предусмотренными шумами ПП и измерителя, "пропустить" его через построенный фильтр и сравнить полученный на выходе сигнал с известной (в данном случае) полезной его составляющей; разность между ними будет характеризовать погрешности измерения на выходе фильтра; - так как в реальных условиях некоторые характеристики шумов могут отличаться от принятых при проектировании (создании фильтра), не лишними становятся испытания эффективности работы фильтра в условиях более приближенных к реальным, нежели принятые при проектировании. Пакет Signal Processing Toolbox (в дальнейшем сокращенно Signal) предназначен для осуществления операций по трем последним из указанных этапов. Он позволяет проектировать (рассчитывать конкретные числовые характеристики) цифровые и аналоговые фильтры по требуемым амплитудно- и фазо-частотным их характеристикам, формировать последовательности типовых временных сигналов и обрабатывать их спроектированными фильтра-ми. В пакет входят процедуры, осуществляющие преобразования Фурье, Гиль-берта, а также статистический анализ. Пакет позволяет рассчитывать корреля-ционные функции, спектральную плотность мощности сигнала, оценивать параметры фильтров по измеренным отсчетам входной и выходной последова-тельностей. 5.1. Формирование типовых процессов 5.1.1. Формирование одиночных импульных процессов В пакете Signal предусмотрено несколько процедур, образующих последовательности данных, представляющие некоторые одиночные импульс-ные процессы типовых форм. Процедура rectpuls обеспечивает формирование одиночного импульса прямоугольной формы. Обращение вида y = rectpuls(t, w) позволяет образовать вектор у значений сигнала такого импульса единичной амплитуди, шириною w, центрированного относительно t=0 по заданому вектору t моментов времени. Если ширина импульса w не указана, ее значение по умолчанию принимается равным единице. На рис. 5.2. приведен результат образования процесса, состоящего из трех последовательных прямоугольных импульсов разной висоты и ширины, по такой последовательности команд t = 0 : 0.01 : 10; y = 0.75*rectpuls(t-3, 2)+0.5*rectpuls(t-8, 0.4)+1.35*rectpuls(t-5, 0.8); plot(t,y), grid, set(gca,'FontName','Arial Cyr','FontSize',16) 5.1. Формирование типовых процессов 191 title(' Пример применения процедуры RECTPULS') xlabel('Время ( с )') ylabel('Выходной процесс Y(t)') Рис. 5.2. Рис. 5.3. Формирование импульса треугольной формы единичной амплитуды можно осуществить при помощи процедуры tripuls, обращение к которой имеет вид y =tripuls(t, w,s). Аргументы y, t и w имеют тот же смысл. Аргумент s (-1<s <1) определяет наклон треугольника. Если s=0, или не указан, треугольный импульс имеет симметричную форму. Приведем пример (результат представлен на рис. 5.3): t = 0 : 0.01 : 10; y = 0.75*tripuls(t-1, 0.5)+0.5*tripuls(t-5, 0.5, -1)+1.35*tripuls(t-3, 0.8,1); plot(t,y), grid, set(gca,'FontName','Arial Cyr','FontSize',16) title(' Пример применения процедуры TRIPULS') xlabel('Время ( с )') ylabel('Выходной процесс Y(t)') Для формирования импульса, являющегося синусоидой, модулированной функцией Гаусса, используется процедура gauspuls. Если обратиться к ней по форме 5.1. Формирование типовых процессов 192 y = gauspuls (t,fc,bw), то она создает вектор значений указанного сигнала с единичной амплитудой, с синусоидой, изменяющейся с частотой fc Гц, и с шириной bw полосы частот сигнала. Рис. 5.4. В случае, когда последние два аргумента не указаны, они по умолчанию приобретают значения 1000 Гц и 0.5 соответственно. Приведем пример создания одиночного гауссового импульса (результат приведен на рис. 5.4): t = 0 : 0.01 : 10; y = 0.75*gauspuls(t-3, 1,0.5); plot(t,y), grid, set(gca,'FontName','Arial Cyr','FontSize',16) title(' Пример применения процедуры GAUSPULS') xlabel('Время ( с )') ylabel('Выходной процесс Y(t)') Наконец, рассмотрим процедуру sinc, формирующую вектор значений функции sinc(t), которая определяется формулами: sin ( ) , sin( ) c t t t t t = = ≠ ⎧ ⎨ ⎪ ⎩⎪ 1 0 0 π π Эта функция является обратным преобразованием Фурье прямоугольного импульса шириной 2 π и высотою 1: sin ( ) c t e d j t = − ∫ 1 2 π ω ω π π 5.1. Формирование типовых процессов 193 Рис. 5.5. Приведем пример ее применения: t=0 : 0.01 : 50; y1=0.7*sinc(pi*(t-25)/5); plot(t,y1), grid, set(gca,'FontName','Arial Cyr','FontSize',16) title('Функция SINC Y(t) = 0.7* SINC(pi*(t-25)/5)') xlabel('Время ( с )') ylabel('Выходной процесс Y(t)') Результат изображен на рис. 5.5. 5.1.2. Формирование колебаний Формирование колебаний, состоящих из конечного числа гармонических составляющих (т.е. так называемых полигармонических колебаний), можно осу- ществить при помощи обычных процедур sin (x) и cos (x). Рассмотрим пример (см. рис. 5.6): t=0 : 0.01 : 50; y1=0.7*sin(pi*t/5); plot(t,y1), grid,set(gca,'FontName','Arial Cyr','FontSize',16) title('Гармонические колебания Y(t) = 0.7* SIN(pi*t/5)') xlabel('Время ( с )') ylabel('Выходной процесс Y(t)') Процесс, являющийся последовательностью прямоугольных импульсов с периодом 2 π для заданной в векторе t последовательности отсчетов времени, "генерируется" при помощи процедуры square . Обращение к ней происходит по форме: y = square(t,duty) , где аргумент duty определяет длительность положительной полуволны в про- центах от периода волны. Например (результат приведен на рис. 5.7): y=0.7*square(pi*t/5, 40); plot(t,y), grid,set(gca,'FontName','Arial Cyr','FontSize',16) title('Прямоугольные волны Y(t) = 0.7* SQUARE(pi*t/5, 40)') xlabel('Время ( с )') ylabel('Выходной процесс Y(t)') 5.1. Формирование типовых процессов 194 Рис. 5.6. Рис. 5.7. Аналогично, генерирование пилообразных и треугольных колебаний можно осуществлять процедурой sawtooth . Если обратиться к ней так: y = sawtooth(t,width) , то в векторе y формируются значения сигнала, представляющего собой пило- образные волны с периодом 2 π в моменты времени, которые задаются векто-ром t . При этом параметр width определяет часть периода, в которой сигнал увеличивается. Ниже приведен пример применения этой процедуры: y=0.7*sawtooth(pi*t/5, 0.5); plot(t,y), grid,set(gca,'FontName','Arial Cyr','FontSize',16) title('Треугольные волны Y(t) = 0.7* SAWTOOTH(pi*t/5, 0.5)') xlabel('Время ( с )') ylabel('Выходной процесс Y(t)') В результате получаем процесс, изображенный на рис. 5.8. 5.1. Формирование типовых процессов 195 Рис. 5.8. Процедура pulstran позволяет формировать колебания, являющиеся последовательностью либо прямоугольных, либо треугольных, либо гауссовых импульсов. Обращение к ней имеет вид: y = pulstran(t,d, 'func' ,p1,p2,...) , где d определяет вектор значений тих моментов времени, где должны быть центры соответствующих импульсов; параметр func определяет форму импуль- сов и может иметь одно из следующих значений: rectpuls (для прямоугольного импульса), tripuls (для треугольного импульса) и gauspuls (для гауссового импульса); параметры p1, p2, ... определяют необходимые параметры импульса в соответствиии с формой обращения к процедуре, определяющей этот импульс. Ниже приведены три примера применения процедуры pulstran для разных форм импульсов-составляющих: - для последовательности треугольных импульсов: t=0 : 0.01 : 50 d=[0 : 50/5 : 50]'; y=0.7*pulstran(t, d,'tripuls',5); plot(t,y), grid,set(gca,'FontName','Arial Cyr','FontSize',16) title('Y(t) = 0.7*PULSTRAN(t,d,''tripuls'',5)' ) xlabel('Время ( с )') ylabel('Выходной процесс Y(t)') результат представлен на рис. 5.9; - для последовательности прямоугольных импульсов: t=0 : 0.01 : 50 d=[0 : 50/5 : 50]'; y=0.75*pulstran(t, d,'rectpuls',3); plot(t,y), grid,set(gca,'FontName','Arial Cyr','FontSize',16) title('Y(t) = 0.75*PULSTRAN(t,d,''rectpuls'',3)' ) xlabel('Время ( с )') ylabel('Выходной процесс Y(t)') результат приведен на рис.5.10; 5.1. Формирование типовых процессов 196 Рис. 5.9. Рис. 5.10. Рис. 5.11. - для последовательности гауссовых импульсов t=0 : 0.01 : 50; d=[0 : 50/5 : 50]'; y=0.7*pulstran(t, d,'gauspuls',1,0.5); plot(t,y), grid,set(gca,'FontName','Arial Cyr','FontSize',16) 5.1. Формирование типовых процессов 197 title('Y(t) = 0.7*PULSTRAN(t,d,''gauspuls'',1,0.5)' ) xlabel('Время ( с )'), ylabel('Выходной процесс Y(t)') результат приведен на рис. 5.11. Рассмотрим теперь процедуру chirp , формирующую косинусоиду, частота изменеия которой линейно изменяется со временем. Общая форма обращения к этой процедуре является такой: y = chirp(t,F0,t1,F1) , где F0 - значение частоты в герцах при t=0 , t1 - некоторое заданное значение момента времени; F1 - значение частоты (в герцах) изменения косинусоиды в момент времени t1 . Если три последних аргумента не указаны, то по умолчанию им придаются такие значения: F0 =0 , t1 =1 , F1 =100. Пример: t = 0 : 0.001 : 1; y = 0.75*chirp(t); |