- •Содержание:
- •Задание
- •1. Генерация входной последовательности.
- •Реальный сигнал
- •Теоретическое введение
- •2.1 Цифровые фильтры и их свойства.
- •2.2 Свойства цифровых фильтров.
- •2.3.1 Аналоговые фильтры-прототипы.
- •2.3.2 Фильтры Баттерворта.
- •3. Генерация входной последовательности сигнала
- •3.1 Полигармонический сигнал и случайный шум.
- •Реальный сигнал
- •4. Реализация спектрального анализа с использованием бпф
- •Xlabel('Частота (Гц)');
- •Xlabel('Частота (Гц)');
- •Xlabel('Частота (Гц)');
- •Xlabel('Частота (Гц)');
- •5. Проектирование и реализация цф
- •Xlabel('Частота (Гц)');
- •Xlabel('Частота (Гц)');
- •Xlabel('Частота (Гц)');
- •6. Вывод
- •7. Приложение
3. Генерация входной последовательности сигнала
3.1 Полигармонический сигнал и случайный шум.
Реализуем генерацию полигармонического сигнала средствами программы MatLab и построим график полученного сигнала:
Fs = 128; % частота дискретизации
n = 512; % длина реализации
a = 125; % общая амплитуда равна 500 мкВ
t = (0:n-1)/Fs; % шаг дискретизации
indx = (0:n-1); % вектор целых чисел от 0 до 511
ya=a*cos(3*t*2*pi);
yb=a*cos(7*t*2*pi);
yc=a*cos(10*t*2*pi);
yd=a*cos(25*t*2*pi);
y1 = ya + yb + yc + yd+20;
y1 = y1' ; % транспонируем вектор
clf, plot(t,y1);
grid on;
xlabel('В р е м я (с е к)');
ylabel('Амплитуда (мкВ)');
title('Полигармонический сигнал');
Реальный сигнал
Введем реальный сигнал из файла. Так как сигнал в файле записан с частотой 256Гц, что в два раза превышает используемую нами частоту, то значения считываются из файла через одно. Амплитуда сигнала +/-50мкВ соответствует +/-400 единицам кода);
fid = fopen('d:\dsp\Signal1.dig','r');
y2 = fread(fid,n,'bit16',16);
fclose(fid);
clf, plot(t,y2);
grid on;
xlabel('В р е м я (сек)');
ylabel('А м п л и т у д а (мкВ)');
title('Реальный сигнал');
4. Реализация спектрального анализа с использованием бпф
Произведем спектральный анализ данных сигналов. Для того, чтобы избежать явления Гибсона исходный сигнал умножается на функцию окна. В нашем случае это окна Бартлетта и Чебышева. На графике изображен спектр полигармонического сигнала.
Для окна Бартлетта:
format long e
window = bartlett(n);
Fy1 = fft(window.*y1);
Fy1 = Fy1(1:n/2);
step = indx(1:(n/2))/256*(Fs/2);
c
lf,
plot(step,abs(Fy1));
grid on;
ylabel('Мощность');
Xlabel('Частота (Гц)');
title('Спектр');
На графике четко видны фундаментальные частоты нашего полигармонического сигнала. Сигнал легко различим и не имеет помех.
Проведем спектральный анализ реального сигнала.
Код реализующий данный анализ приведен ниже :
format long e
Fy2
= fft(window.*y2);
Fy2 = Fy2(1:n/2);
clf, plot(step,abs(Fy2));
grid on;
ylabel('Мощность');
Xlabel('Частота (Гц)');
title('Спектр');
Из графика трудно определить что это за сигнал. Можно предположить фундаментальная частота находится в районе 10 Гц. Сигнал сильно зашумлен.
Д
ля
окна Чебышева:
format long e
r=50;
window = chebwin(n,r);
Fy1 = fft(window.*y1);
Fy1 = Fy1(1:n/2);
step = indx(1:(n/2))/256*(Fs/2);
clf, plot(step,abs(Fy1));
grid on;
ylabel('Мощность');
Xlabel('Частота (Гц)');
title('Спектр');
format long e
Fy2 = fft(window.*y2);
Fy2 = Fy2(1:n/2);
clf, plot(step,abs(Fy2));
grid on;
ylabel('Мощность');
Xlabel('Частота (Гц)');
title('Спектр');
