
Министерство образования и науки РФ
ФГАОУ ВПО «Белгородский государственный национальный исследовательский университет» (НИУ «БелГУ»)
ФАКУЛЬТЕТ КОМПЬЮТЕРНЫХ НАУК И ТЕЛЕКОММУНИКАЦИЙ
КАФЕДРА ИНФОРМАЦИОННО-ТЕЛЕКОММУНИКАЦИОННЫХ СИСТЕМ И ТЕХНОЛОГИЙ
Отчет по лабораторной работе №2
По дисциплине информатика
Тема работы «Обработка сигналов в среде программирования MATLAB»
студента группы 141207
Фонов Алексей Юрьевич
Проверил:
к.т.н., доцент Прохоренко Екатерина Ивановна
__________________________________________________________
(оценка)
«____»__________20____г
Белгород, 2013
Цель работы: освоить основные принципы обработки сигналов в программной среде MATLAB.
Задачи:
1) изучить основные принципы обработки звука в среде программирования MATLAB;
2) изучить основные принципы обработки изображений в среде программирования MATLAB.
Индивидуальные данные для выполнения работы (вариант №23)
Задание 1. Загрузить фрагмент сигнала, соответствующий участку звука, в формате wav. Построить график этого сигнала, отложив по оси абсцисс длительность сигнала в мс, а по оси ординат амплитуду сигнала. В наименовании рисунка отразить величину частоты дискретизации и разрядности.
Решение.
Листинг 1 представляет собой реализацию алгоритма в системе MatLab.
Листинг 1.
clc
clear
clc
clear
[X,Fs,bits]=wavread('C:\Users\Леха\Desktop\03.wav');
N=length(X);
t=[0:1/(Fs*10^-3):(N-1)*1/(Fs*10^-3)];
plot(t,X)
xlabel(' время, мс')
ylabel('амплитуда')
title('график 01.wav ')
Здесь использованы стандартные функции:
xlabel, ylabel - обозначение осей
title – заголовок графика
plot - вывод графика в линейном масштабе
wavread - считывание данных из файла формата wav
Проверка работоспособности алгоритма:
Рисунок 1 – график сигнала к заданию 1.
Рисунок 1
Вывод: с помощью данных функций MatLab довольно просто реализовать график сигнала звукового файла в формате .wav , тем самым имея полное представление о поведении сигнала в файле. В моем случае звуковой файл 01.wav имеет Fs=8000, bits=16 (bits – разрядность кода).
Задание 2. Загрузить фрагмент сигнала, соответствующий участку звука, в формате wav. Сформировать новый массив, элементы которого равны по модулю элементам исходного вектора, но противоположны по знаку. Построить график фрагмента сигнала, длительностью не более 500 отсчетов. На графике отобразить исходный сигнал и результат преобразования. По оси абсцисс указать временной интервал выделенного фрагмента сигнала (в мс). Прослушать исходный сигнал и результат преобразования. Сделать выводы.
Решение.
Листинг 2 представляет собой реализацию алгоритма в системе MatLab.
Листинг 2.
clc
clear
[X,Fs,bits]=wavread('C:\Users\Леха\Desktop\16.wav');
N=length(X);
t=[0:1/(Fs*10^-3):(N-1)*1/(Fs*10^-3)];
X1=X.*(-1);
figure(1)
hold on
plot(t(1:500),X(1:500),'-r')
plot(t(1:500),X1(1:500),'-k')
Xlabel(' время, мс')
ylabel('амплитуда')
title('график 01.wav ')
hold off
wavwrite(X1,Fs,bits,'C:C:\Users\Леха\Desktop\0108.wav')
Здесь использованы стандартные функции:
Xlabel, ylabel - обозначение осей
title – заголовок графика
plot - вывод графика в линейном масштабе
wavread - считывание данных из файла формата wav
wavwrite - записывание данных в файл формата wav
Проверка работоспособности алгоритма:
Рисунок 2 – график сигнала и его инверсии.
Рисунок 2
Вывод: несмотря на инвертирование сигнала, на графике это хорошо видно, человеческий слух не может почувствовать разницу между сигналом и его инверсией, проще говоря, новый звуковой файл по слуху ничем не отличается от первоначального.
Задание 3. Загрузить фрагмент сигнала, соответствующий участку речевому сигналу, в массив X1. Загрузить в массив X2 фрагмент сигнала, соответствующий музыкальной композиции. Нормировать оба сигнала к 1 (разделить каждый сигнал на максимальное значение), записать в аудиофайл результат суммы двух сигналов. Нормировать X1 к 1, а X2 к 0,2 (разделить сигнал на максимальное значение и умножить на 0,2), записать в аудиофайл результат суммы полученных сигналов. Нормировать X2 к 1, а X1 к 0,2 (разделить сигнал на максимальное значение и умножить на 0,2), записать в аудиофайл результат суммы полученных сигналов. Построить графики всех сигналов, полученных при выполнении задания. Прослушать исходный сигнал и результаты преобразований. Сделать выводы.
Решение.
Листинг 3 представляет собой реализацию алгоритма в системе MatLab.
Листинг 3.
clc
clear
[X1,Fs,bits]=wavread('C:\Users\Леха\Desktop\1.wav');
N1=length(X1);
t1=[0:1/(Fs*10^-3):(N1-1)*1/(Fs*10^-3)];
[X2,Fs,bits]=wavread('C:\Users\Леха\Desktop\2.wav');
N2=length(X2);
t2=[0:1/(Fs*10^-3):(N2-1)*1/(Fs*10^-3)];
M1=max(X1);
M2=max(X2);
x1=X1./M1;
x2=X2(1:N1)./M2;
x3=x1+x2;
x4=0.2.*x1+x2;
x5=0.2.*x2+x1;
figure(1)
hold on
subplot(3,1,1)
plot(t1,x1,'-k')
title('графики нормированных к 1 сигналов')
xlabel('время,c')
ylabel('амплитуда')
subplot(3,1,2)
plot(t1,x2,'-y')
xlabel('время,c')
ylabel('амплитуда')
subplot(3,1,3)
plot(t1,x3,'-b')
xlabel('время,c')
ylabel('амплитуда')
hold off
wavwrite(x3,Fs,bits,'C:\Users\Леха\Desktop\1_1.wav')
figure(2)
hold on
subplot(3,1,1)
plot(t1,x1,'-k')
title('графики сигналов(речь к 0.2,музыка к 1)')
xlabel('время,c')
ylabel('амплитуда')
subplot(3,1,2)
plot(t1,x2,'-y')
xlabel('время,c')
ylabel('амплитуда')
subplot(3,1,3)
plot(t1,x4,'-b')
xlabel('время,c')
ylabel('амплитуда')
hold off
wavwrite(x4,Fs,bits,'C:\Users\Леха\Desktop\2_2.wav')
figure(3)
hold on
subplot(3,1,1)
plot(t1,x1,'-k')
title('графики сигналов(речь к 1,музыка к 0.2)')
ylabel('амплитуда')
xlabel('время,c')
subplot(3,1,2)
plot(t1,x2,'-y')
xlabel('время,c')
ylabel('амплитуда')
subplot(3,1,3)
plot(t1,x5,'-b')
xlabel('время,c')
ylabel('амплитуда')
hold off
wavwrite(x5,Fs,bits,'C:\Users\Леха\Desktop\3_3.wav')
Здесь использованы стандартные функции: