Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otchet_po_2_labe_versia2.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
616.98 Кб
Скачать

Министерство образования и науки РФ

ФГАОУ ВПО «Белгородский государственный национальный исследовательский университет» (НИУ «БелГУ»)

ФАКУЛЬТЕТ КОМПЬЮТЕРНЫХ НАУК И ТЕЛЕКОММУНИКАЦИЙ

КАФЕДРА ИНФОРМАЦИОННО-ТЕЛЕКОММУНИКАЦИОННЫХ СИСТЕМ И ТЕХНОЛОГИЙ

Отчет по лабораторной работе №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')

Здесь использованы стандартные функции:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]