НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ
ФАКУЛЬТЕТ АВТОМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
Кафедра Систем Сбора и Обработки Данных
Дисциплина «Теория и обработка сигналов», 5 - й семестр
ЛАБОРАТОРНАЯ РАБОТА № 1
НЕПРЕРЫВНЫЕ И ДИСКРЕТНЫЕ
ПО ВРЕМЕНИ СИГНАЛЫ
Цель работы: Знакомство со средой MATLAB, приобретение практических навыков генерирования непрерывных и дискретных по времени сигналов, построения графиков сигналов в среде MATLAB.
Задание и порядок выполнения работы.
1. Запустите Matlab на Вашей рабочей станции. После запуска на экране появляется командное окно – Command Window Matlab, предназначенное для ввода команд и вывода результатов вычислений. В верхней части командного окна расположена строка меню, под ним размещена панель инструментов с кнопками - пиктограммами для выполнения некоторых наиболее часто используемых операций.
В Matlab имеется два уровня справочной системы (help): встроенная справка и HTML - документация. Для просмотра HTML-документации достаточно выбрать одну из первых четырех команд меню Help или ввести команду helpdesk. Более часто используется встроенная справка. При известном имени команды для получения о ней справочных сведений достаточно ввести
>> help <имя команды>.
Например,
>> help plot
для вывода справки о команде plot.
Для поиска М – функций по ключевым словам служит команда
>> lookfor <ключевое слово>.
Команда
>> hthelp
открывает интерактивное меню help,
команда
>>demo
- демонстрационные, в том числе обучающие примеры работы в Matlab.
2. Изучите справочные сведения по следующим функциям и командам, наиболее часто используемым при работе с графиками в Matlab: plot, stem, grid, subplot, figure, title, axis, xlabel, ylabel,
3. Постройте график дискретного по времени сигнала с помощью следующей последовательности команд
n = 0 : 1 : 30;
y = sin(n/3);
subplot(3,1,1)
stem(y)
Хотя sin(t/3) – непрерывная функция аргумента t, здесь вычисляются только отдельные значения (отсчеты) этого сигнала sin(n/3).
Постройте два графика непрерывных по времени сигналов, используя последовательность команд
n1 = 0 : 1 : 30;
y1 = sin(n1/3);
subplot(3,1,2)
plot(n1, y1, '-sk')
n2 = 0 : 5 : 30;
y2 = sin(n2/3);
subplot(3,1,3)
plot(n2, y2, '-.or')
Функция plot() использует линейную интерполяцию между точками (узлами) при построении графика. Обратите внимание на важность количества отсчетов для представления (сглаживания) непрерывного сигнала. Каково минимальное число точек (отсчетов) на период гармоники необходимо для её представления по отсчетам?
4. На интервале t = 0: 0.1: 2*pi постройте в одном графическом окне графики следующих сигналов с выводом заголовков и меток по осям
а) y1(t)=sin(t), y2(t)=sin(2t), y3(t)=sin(5t),
б) y4(t)=sin(4(t-1)), y5(t)=sin(2t+2).
Обратите внимание на характер операций временного масштабирования и временного сдвига.
5. Ознакомьтесь со справочными сведениями по процедуре rectpuls для формирования импульса прямоугольной формы и процедуре tripuls для получения треугольного импульса. Постройте в одном графическом окне графики сигналов:
и
- треугольный импульс с основанием четыре единицы и единичной высотой, смещенный на три единицы по оси аргумента. Введите титульные и осевые надписи для графиков (используйте для этого команды title, xlabel, ylabel).
6. Познакомьтесь с созданием файл - функций (Matlab function) и Script-файлов ( Matlab script) в среде Matlab. Используя метод прямоугольников для вычисления определенного интеграла
,
напишите файл-функцию для численного вычисления интеграла от функции
на интервале
, основываясь на команде sum Matlab без использования цикла for. Синтаксис функции
, где N – число прямоугольников. Напишите также Script – файл (файл – сценарий) для вычисления того же интеграла, в котором предусмотрен ввод значений числа точек N с помощью команды input. Этот. m-файл может содержать цикл for.
Далее напишите процедуру (файл - функцию)
численного интегрирования функции exp(t) на интервале [0,1].
7. Изучите программу, представленную в Приложении 1. В ней показано генерирование часто используемых дискретных сигналов: единичного импульса, ступенчатого и пилообразного. Выполните процедуру и представьте результаты в отчете.
8. С помощью команды stem постройте графики дискретных синусоид
и
. Объясните, почему эти графики совпадают.
9. Ознакомьтесь с приведенной в Приложении 2 процедурой для получения и построения графиков периодических дискретных сигналов прямоугольной и пилообразной форм. Выполните процедуру и изучите её организацию.
10. Ознакомьтесь по справочной системе Matlab с командой random, предназначенной для генерирования случайных чисел со специфицированным законом распределения. Используя эту команду, сгенерируйте и постройте на одной фигуре два графика случайных сигналов длиной 1000 отсчетов с нормальным (гауссовским) законом распределения:
а) сигнал sig1 – гауссовский сигнал с нулевым средним значением и единичной дисперсией,
б) сигнал sig2 – гауссовский сигнал со средним значением 10 и стандартным отклонением 2.
11. Факультативное задание. Одной из важнейших областей приложений обработки сигналов является обработка аудиосигналов. Напишите файл – функцию с синтаксисом [x, t] = harmonic(omega0, omegas, dur) для генерирования синусоидального сигнала. Здесь omega0 - угловая частота гармоники, рад/с, omegas - угловая частота отсчетов, рад/с, dur - продолжительность сигнала, c, x – вектор значений сигнала, t – вектор значений времени. Используя эту функцию, сгенерируйте и постройте графики (первые 100 отсчетов) гармоник с частотами omega0 = 2*pi*261,63 (нота До первой октавы) и omega0 = 2*pi*880 (нота Ля второй октавы) , omegas = 2*pi*8192 рад/с и длительностью dur = 1с. Сгенерируйте также и постройте график сигнала
длительностью 1с.
Ознакомьтесь с синтаксисом функции sound(), позволяющей с помощью звуковой карты компьютера воспроизвести звуковой сигнал. Обратите внимание, что функция sound() и подобные ей по назначению функции soundsc() и wavplay() применяют интерполяцию для формирования сигналов непрерывного времени при воспроизведении звука по отсчетам. Используя наушники или звуковые колонки, прослушайте сгенерированные сигналы.
В приложении 4 приведена процедура, позволяющая сгенерировать и проиграть последовательность нот первой октавы. Ознакомьтесь с процедурой и выполните её с прослушиванием.
12. Проверьте усвоение материала по контрольным вопросам и упражнениям. Составьте отчет по лабораторной работе. В отчете должны быть представлены
§ титульный лист,
§ название и цель работы,
§ формулировки пунктов работы, команды и. m – файлы, графики, комментарии и выводы, относящиеся к этапам работы.
Для составления отчета должна использоваться среда MS WORD.
Литература
1. , Щетинин и обработка сигналов.: Уч. пособие.- Новосибирск. Изд-во НГТУ, 1998 - ч.1.
2. MATLAB в ТОС: Электронное уч. пособие.- Новосибирск. 2004.
3. , MATLAB 5.0/5.3. Система символьной математики. М.: Нолидж. -1999.
4. MatLAB 5.x. – К.: Издат. группа BHV, 2000.
5. , . MATLAB 5 для студентов. - 2-е изд., испр. и дополн. – М.: ДИАЛОГ-МИФИ, 1999.
Web – ресурсы
1. http://www. /access/helpdesk/help/toolbox/signal/signal. shtml
2. http://www. /
3. http://users. ece. gatech. edu/~bonnie/book/TUTORIAL/tutorial. html
4. http://tiger.cs.nstu.ru/
Контрольные вопросы и упражнения
1. Объясните синтаксис и использование функции построения графиков plot().
2. Постройте график непрерывной по аргументу функции ![]()
с выводом заголовка, меток по осям и сетки.
3. Постройте график дискретного сигнала![]()
с выводом заголовка и меток по осям.
4. Объясните различия функций построения графиков plot() и stem().
5. Постройте графики сигналов
а)
,
б) 
в отдельных подокнах одного графического окна.
6. Покажите, что два аналоговых сигнала ![]()
неразличимы при дискретизации с частотой Fs = 40 Гц.
7. С помощью команды hold постройте в одном графическом окне графики функций
а) ![]()
б) ![]()
в)
.
8. Постройте график функции
в виде столбчатой диаграммы.
9. Используя функцию hist(), постройте график гистограммы случайной величины, формируемой встроенной функцией randn().
10. Пусть n = -3 : 7; x = [0 0 0 2 0 1 -1 3 0 0 0]. Постройте в одном графическом окне график сигнала x и графики задержанного (сдвинутого вправо) на два отсчета сигнала и сдвинутого вправо на один отсчет и зеркально повернутого относительно оси y сигнала.
11. Что такое файл-сценарий (Script-файл) Matlab? Для чего используются файл – сценарии?
12. Составьте файл-сценарий, в котором выполняется
- генерирование 50 значений случайного шума с помощью функции rand(),
- генерирование сигнала
,
- построение графиков шума, сигнала и их суммы (смеси) в отдельных графических подокнах.
13. Объясните назначение и синтаксис файл-функции.
14. Напишите файл –функцию для вычисления значений функции
.
15. Постройте график функции
.
16. Объясните назначение и синтаксис функции sound().
Приложение 1.
% Процедура генерирования и построения графиков
% единичного импульса (imp), ступенчатого (step)
% и пилообразного (ramp) сигналов
L = input('Введите длину сигнала= ');
n = 1:L;
FT = input(' Введите частоту отсчетов = ');
T = 1/FT;
imp = [1 zeros(1,L-1)];
% вариант imp = (n==1);
step = ones(1,L);
ramp = (n-1).*step;
subplot(3,1,1);
stem(n-1,imp);
xlabel([' Интервал отсчетов',num2str(T), ' сек']);ylabel(' Амплитуда');
subplot(3,1,2);
stem(n-1,step);
xlabel(['Интервал отсчетов ',num2str(T), ' сек']);ylabel('Амплитуда');
subplot(3,1,3);
stem(n-1,ramp);
xlabel(['Интервал отсчетов',num2str(T), ' сек']);ylabel('Амплитуда');
Приложение 2.
% Процедура формирования и построения графиков дискретных
% периодических последовательностей прямоугольной
% и пилообразной формы
A = input('Введите максимальное значение сигнала =');
L = input('Введите длину последовательности =');
N = input('Введите значение периода последовательности =');
FT = input('Введите частоту отсчетов =');
DC = input('Введите ширину прямоугольного импульса, % от периода = ');
% Формирование сигналов
T = 1/FT;
t = 0:L-1;
x = A*sawtooth(2*pi*t/N);
y = A*square(2*pi*(t/N),DC);
% Графики
subplot(211)
stem(t, x);
ylabel(' Амплитуда');
xlabel([' Интервал отсчетов ',num2str(T),'сек']);
subplot(212)
stem(t, y);
ylabel('Амплитуда');
xlabel(['Интервал отсчетов ',num2str(T),'сек']);
Приложение 3. Частоты звучания нот, Гц
Частота, Гц Hота | Суб- контp- октава | Контp- октава | Большая октава | Малая октава | 1 октава | 2 октава | 3 октава | 4 октава | 5 октава | |
До До-диез Ре Ре-диез Ми Фа Фа-диез Соль Соль-диез Ля Си-бемоль Си | C C# D D# E F F# G G# A B H | 20.61 21.82 23.12 24.50 25.95 27.50 29.13 30.87 | 32.70 34.65 36.95 38.88 41.21 43.65 46.25 49.00 51.90 55.00 58.26 61.74 | 65.41 69.30 73.91 77.78 82.41 87.31 92.50 98.00 103.80 110.00 116.54 123.48 | 130.82 138.59 147.83 155.56 164.81 174.62 185.00 196.00 207.00 220.00 233.08 246.96 | 261.63 277.18 293.66 311.13 329.63 349.23 369.99 392.00 415.30 440.00 466.16 493.88 | 523.25 554.36 587.32 622.26 659.26 698.46 739.98 784.00 830.60 880.00 932.32 987.75 | 1046.5 1108.7 1174.6 1244.5 1318.5 1396.9 1480.0 1568.0 1661.2 1720.0 1864.6 1975.5 | 2093.0 2217.4 2349.2 2489.0 2637.0 2793.8 2960.0 3136.0 3332.4 3440.0 3729.2 3951.0 | 4186.0 4434.8 4698.4 4978.0 5274.0 |
Приложение 4.
% Процедура формирования и проигрывания последовательности нот
% Каждая последующая нота имеет частоту, большую в 21/12 раз, чем предыдущая
t = 0:1/fs:0.25; % длительность каждой ноты
tspace = .05; % длительность паузы между нотами
fr = 2^(1/12); % отношение частот соседних нот
A4 = 440; % Частота ноты ЛЯ первой октавы - опорная нота
B4 = A4*fr^2; % Частота ноты СИ первой октавы
C5 = A4*fr^3; % Частота ноты ДО второй октавы
C4 = A4*fr^(-9);
D4 = A4*fr^(-7);
E4 = A4*fr^(-5);
F4 = A4*fr^(-4);
G4 = A4*fr^(-2);
xspace = zeros(size(tspace));
% формирование вектора нот и пауз между ними
x = [cos(C4*2*pi*t),xspace, cos(D4*2*pi*t),xspace, cos(E4*2*pi*t),...
xspace, cos(F4*2*pi*t),xspace, cos(G4*2*pi*t),xspace,...
cos(A4*2*pi*t),xspace, cos(B4*2*pi*t),xspace, cos(C5*2*pi*t)];
sound(x, fs);
Составил доц.


