
Добавил:
toykion
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:лаб4 / lab4_2
.m clc; clear; close all;
Fd = 44100; % частота дискретизации в Гц
Td = 1./Fd; % период дискретизации
Ts = 0.1; % длительность одного щелчка в секундах
N = Fd*Ts; % количество дискретных отсчетов для одного щелчка
% Создаем исходный импульсный сигнал для одного щелчка
x_single = zeros(N,1);
x_single(1:50) = linspace(0, 1, 50); % импульсный сигнал, быстро затухающий
x_single(51:100) = linspace(1, 0, 50); % обратная часть для создания щелчка
% Создадим серию щелчков с интервалами
total_duration = 10; % общая длительность сигнала в секундах
x_series = zeros(Fd*total_duration, 1); % инициализация массива для серии щелчков
% Вставляем щелчки с интервалами в одну секунду
for i = 0:total_duration-1
x_series(i*Fd+1 : i*Fd+N) = x_single;
end
% Применяем ФВЧ ко всему сигналу
Fc = 1000; % граничная частота фильтра в Гц
[b, a] = butter(2, Fc/(Fd/2), 'high'); % ФВЧ 2-го порядка
y_series = filter(b, a, x_series);
% Нормировка по амплитуде
Am = 8192; % максимум громкости
y_series = y_series./max(abs(y_series)) * Am;
output_signal = int16(y_series);
% Визуализация звукового сигнала
t = (0:length(y_series)-1) / Fd; % создаем вектор времени для визуализации
figure;
plot(t, y_series);
xlabel('Время (с)');
ylabel('Амплитуда');
title('Визуализация серии щелчков пальцами');
grid on;
% Записываем новый аудиофайл
audiowrite('finger_snap_series.wav', output_signal, Fd);
Fd = 44100; % частота дискретизации в Гц
Td = 1./Fd; % период дискретизации
Ts = 0.1; % длительность одного щелчка в секундах
N = Fd*Ts; % количество дискретных отсчетов для одного щелчка
% Создаем исходный импульсный сигнал для одного щелчка
x_single = zeros(N,1);
x_single(1:50) = linspace(0, 1, 50); % импульсный сигнал, быстро затухающий
x_single(51:100) = linspace(1, 0, 50); % обратная часть для создания щелчка
% Создадим серию щелчков с интервалами
total_duration = 10; % общая длительность сигнала в секундах
x_series = zeros(Fd*total_duration, 1); % инициализация массива для серии щелчков
% Вставляем щелчки с интервалами в одну секунду
for i = 0:total_duration-1
x_series(i*Fd+1 : i*Fd+N) = x_single;
end
% Применяем ФВЧ ко всему сигналу
Fc = 1000; % граничная частота фильтра в Гц
[b, a] = butter(2, Fc/(Fd/2), 'high'); % ФВЧ 2-го порядка
y_series = filter(b, a, x_series);
% Нормировка по амплитуде
Am = 8192; % максимум громкости
y_series = y_series./max(abs(y_series)) * Am;
output_signal = int16(y_series);
% Визуализация звукового сигнала
t = (0:length(y_series)-1) / Fd; % создаем вектор времени для визуализации
figure;
plot(t, y_series);
xlabel('Время (с)');
ylabel('Амплитуда');
title('Визуализация серии щелчков пальцами');
grid on;
% Записываем новый аудиофайл
audiowrite('finger_snap_series.wav', output_signal, Fd);