КР (Курсовая работа), страница 5
Описание файла
Файл "КР" внутри архива находится в папке "Курсовая работа". Документ из архива "Курсовая работа", который расположен в категории "". Всё это находится в предмете "радиотехнические цепи и сигналы (ртцис)" из 5 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "ртцис (отц)" в общих файлах.
Онлайн просмотр документа "КР"
Текст 5 страницы из документа "КР"
>> s=A* rectpuls (t – tau/2, tau);
При вводе этого оператора либо нужно предварительно задать значения амплитуды А и длительности tau, либо в самом операторе вместо идентификаторов А и tau поставить численные значения.
б) Треугольный импульс.
>> s= A * tripuls (t – tau/2, tau);
- 31 -
в) Экспоненциальный импульс.
>> s = A * exp ( - t / tau);
Подразумевается, что вектор t задан для моментов времени t 0.
г) Синусоидальный импульс.
>> s = A * sin (pi * t / tau) .* (t>=0) .* (t<=tau);
Здесь используется тот факт, что операции сравнения возвращают 1, если неравенство выполняется, или 0 в противном случае.
д) Радиоимпульсы.
Они получаются при умножении видеоимпульса s на гармоническое колебание:
>> s1 = s .* cos (2*pi*f0*t + phi);
Предварительно нужно задать значение несущей частоты f0 и начальной фазы phi. Обратите внимание, что операция умножения представлена здесь как .* (точка перед знаком *). Это означает поэлементное умножение
- 32 -
векторов (в противном случае производились бы операция матричного умножения). В тех случаях, когда осуществляется умножение скаляров или матрицы (вектора) на скаляр, можно использовать символ *. То же самое относится к операции деления и возведения в степень. Поэлементное деление матриц задаётся оператором . /, поэлементное возведение в степень . ^. Число задаётся в MatLab как pi.
е) Пачки импульсов.
Для генерации конечной последовательности (пачки) импульсов одинаковой формы с произвольно задаваемыми задержками и амплитудами используется функция pulstran. Она вызывается следующим образом:
s= pulstran (t, d, ‘func’, p1, p2 …)
Здесь t - вектор значений моментов времени, d - вектор задержек и амплитуд импульсов, ‘func’- имя функции, задающей одиночный импульс, например, ‘rectpuls’ или ‘tripuls’; p1, p2 … - параметры одиночного импульса, передаваемые функции func.
Например, нужно задать следующую последовательность прямоугольных импульсов:
Вводится набор операторов:
>> Fs= 1e3; t= 0:1/Fs:1; t= t’;
>> tau= 0.1;
>> d(: ,1)= [0.05 0.25 0.55]’ ;
>> d(: ,2)= [2 3 - 1]’;
>> s= pulstran (t, d, ‘rectpuls’, tau);
Если нужно построить последовательность импульсов произвольной формы причём отсчёты одиночного импульса записаны в векторе s1, то используют следующую форму задания функции pulstran:
- 33 -
s= pulstran (t, d, s1, Fs);
Например, нужно задать пачку из четырёх синусоидальных импульсов:
Вводятся следующие операторы:
>> Fs= 1e4;
>> t= 0:1/Fs:2e-2; t=t’;
>> tau= 2e-3; A= 2;
>> s1= sin (pi * t / tau) .* (t<=tau);
>> d(: ,1)= (0:3)’ * 5e-3;
>> d(: ,2)= A*ones(4,1);
>> s= pulstran (t, d, s1, Fs);
ж) Периодическая последовательность прямоугольных импульсов.
>> s= A/2 * (1+square (2*pi*t / T, tau / T*100));
з) Пилообразный сигнал.
>> s= A* sawtooth (2*pi*t / T);
- 34 -
и) Бигармонический сигнал.
>> s= A1 *cos (2*pi*f1*t+phi1) + A2 *cos (2*pi*f2*t+phi2);
к) Амплитудно-модулированный сигнал.
>> s= A*(1+M*cos (2*pi*F*t+psi)).*cos (2*pi*f0*t+phi);
л) Частотно-модулированный сигнал.
>> s= A*cos (2*pi*f0*t + m*cos (2*pi*F*t + psi) + phi);
м) Случайные сигналы.
Для генерации случайной последовательности с равномерным законом распределения вероятностей служит функция rand, с нормальным законом распределения – функция randn.
Например, нужно задать нормальный гауссовский белый шум с нулевым математическим ожиданием и дисперсией 2=4.
>> Fs= 1e3;
>> t=0:1/Fs:1;
>> sigma= 2;
>> n= sigma * randn ( length(t), 1);
В дальнейшем можно создавать зашумлённые сигналы:
>> sn= s+n;
В качестве сигнала s можно взять одну из функций, описанных выше.
10.2. Построение графика тестового сигнала
График тестового сигнала можно построить, используя функции plot, stem или stairs:
>> plot (t, s)
>> plot (t, s, ‘.’)
>> stem(t, s)
>> stairs (t, s)
-
35 -
Первая функция строит график сигнала, в котором все отсчётные значения соединены отрезками прямых (получается график соответствующего аналогового сигнала при достаточно малом интервале дискретизации). Вторая функция имеет «точечный» вид (отсчёты сигнала не соединены линиями). Третья функция представляет отсчёты вертикальными линиями с кружком на конце. Четвёртая функция представляет сигнал в виде ступенчатой линии. Можно ограничить диапазон выводимых значений. При этом указывается интервал номеров отсчётов:
>> plot (t(1:100), s(1:100))
Будут выведены значения сигнала с 1-го по 100-й отсчёт. Можно управлять диапазоном значений, отложенных по осям абсцисс и ординат графика. Для этого используются функции:
axis ([xmin xmax ymin ymax]) – задание пределов по оси абсцисс (от xmin до xmax) и по оси ординат (от ymin до ymax); числовые значения в списке разделяются пробелами;
xlim ([xmin xmax]) – задание пределов по оси абсцисс;
ylim ([ymin ymax]) – задание пределов по оси ординат.
Добавление сетки производится оператором grid (grid on – включение, grid off – выключение). Можно также управлять цветом, типом линий и маркерами точек данных. Для этого используется строковый параметр в списке входных аргументов функций plot, stem, stairs.
Управление цветом:
b – синий (blue) (по умолчанию),
с – голубой (cyan),
g – зелёный (green),
k – чёрный (black),
m – фиолетовый (magenta),
r – красный (red),
y – жёлтый (yellow).
Управление типом линий :
-
непрерывная (по умолчанию),
- - пунктирная (длинный штрих),
: пунктирная (короткий штрих),
-. штрих-пунктирная.
Управление маркерами данных:
. точка (по умолчанию),
+ знак «плюс»,
* звёздочка,
о кружок,
- 36 -
х крестик,
s квадрат,
d ромб,
v треугольник остриём вниз,
^ треугольник остриём вверх.
Например, plot (t, s, ‘r’) – непрерывная линия красного цвета,
plot (t, s, ‘:og’) – пунктирная линия зелёного цвета, точки данных отмечены кружками.
10.3.Фильтрация сигнала
Выходной сигнал фильтра можно найти, используя функцию filter. Она реализует алгоритм цифровой фильтрации, соответствующий транспонированной структуре фильтра (direct form II transposed) (см. подраздел 6.3).
>> y= filter (b, a, s);
где b и a – векторы коэффициентов числителя и знаменателя передаточной функции фильтра; s – вектор входного сигнала; y – вектор выходного сигнала. Рассчитав выходной сигнал, можно построить графики входного и выходного сигналов:
>> plot (t, s, ‘r’, t, y, ‘g’)
Входной сигнал будет отображён непрерывной линией красного цвета, а выходной – непрерывной линией зелёного цвета.
При использовании функции stem лучше вывести графики отдельно:
>> subplot (2,1,1)
>> stem (t, s, ‘.r’)
>> subplot (2, 1, 2)
>> stem (t, y, ‘.b’)
10.4. Фильтрация как операция свёртки входного сигнала и импульсной характеристики фильтра
Сначала нужно получить импульсную характеристику фильтра:
>> g= impz (b, a);
где b и a – коэффициенты полиномов числителя и знаменателя передаточной функции, g – вектор отсчётов импульсной характеристики. Количество
- 37 -
отсчётов рассчитывается автоматически и зависит от поведения импульсной характеристики. Для явного задания количества расчётных точек n нужно ввести оператор:
>> g= impz (b, a, n);
Для вывода графика импульсной характеристики не нужно указывать выходной параметр и ставить точку с запятой:
>> impz (b, a)
Рассчитав импульсную характеристику, можно найти выходной сигнал фильтра методом свёртки:
>> y= conv (s, g);
где s – вектор входного сигнала, g – вектор импульсной характеристики, y – вектор выходного сигнала.
Далее следует построить графики входного и выходного сигналов (см. подразделы 10.2 и 10.3).
10.4. Фильтрация в частотной области с использованием быстрого преобразования Фурье (БПФ)
В соответствии со спектральным методом спектр выходного сигнала равен произведению спектра входного сигнала и комплексной частотной характеристики фильтра. Спектр вычисляется путём применения к сигналу, заданному в виде последовательности отсчётов, дискретного преобразования Фурье (ДПФ). В MatLab алгоритм ДПФ применяется в форме БПФ (FFT – Fast Fourier Transform). Для осуществления фильтрации в частотной области задаются операторы (подразумевается, что сигнал s, частота дискретизации Fs, а также коэффициенты фильтра b и a определены ранее):
>> K= freqz (b, a, 512);
>> S= fft (s, 1024);
>> Y= S(1:512) .*K;
>> y= ifft (Y);
Нужно следить, чтобы суммарное количество отсчётов сигнала s и импульсной характеристики g = impz (b, a) не превышало 1024. В противном случае нужно использовать функцию fft, задавая более высокую размерность преобразования. Тогда большее количество точек n надо задавать при расчёте частотной характеристики фильтра: K = freqz (b, a, n).
- 38 -
(n = N/2, где N – размерность БПФ.) Помимо графиков сигналов можно вывести спектры входного и выходного сигналов и частотную характеристику фильтра:
>> f = (0:511)/512*(Fs/2);
>> subplot (3,1,1)
>> stem (f, abs(S(1:512)))
>> subplot (3,1,2)
>> plot (f, abs(K))
>> subplot (3,1,3)
>> stem (f, abs(Y(1:512)))
Вместо функции stem можно использовать функцию plot, тогда получим непрерывные спектры. Если имеется необходимость совместить все три графика, то можно использовать операторы hold on и hold off вместо операторов subplot. Для различения графиков нужно задать различный цвет и (или) тип линии (см. подраздел 10.2).
Блочную фильтрацию с помощью БПФ (сигнал разбивается на блоки по N отсчётов, где N – размерность БПФ) можно также реализовать, используя функцию fftfilt:
>>y = fftfilt (g, s, N);
где g – вектор импульсной характеристики фильтра, s – вектор входного сигнала, N – размерность БПФ.
10.5. Фильтрация сигнала с применением программы sptool
Программа sptool (signal processing tool) позволяет просматривать графики сигналов и их спектров, производить спектральный анализ сигнала, рассчитывать и анализировать фильтры, а также фильтровать сигналы. Программа имеет удобный графический интерфейс. Фильтрация осуществляется с применением функции filter (см. подраздел 10.3). При выполнении спектрального анализа сигнала имеется возможность выбора из довольно широкого набора цифровых параметрических и непараметрических методов. Вызов программы осуществляется из командной строки MatLab:
>> sptool
После набора имени программы нажмите клавишу