1 Исследование параметров случайного процесса
Определение случайного процесса, статистические характеристики случайного процесса.
Расчет числовых характеристик
Оценка
для математического ожидания
дискретного сигнала
x=load('Data2.txt');
m=mean(x);
Оценка дисперсии
рассчитывается по выражению
D=var(x);
Среднее квадратическое отклонение σ
s=(D)^(1/2);
Энергия сигнала по временной области
for i=1:305736
E=E+(x(i))^2
End
Длительность сигнала Т
f=44100;
b=1/f;
n=305736;
T=b*(n-1);
time=0:b:T
H=m+s;
L=m-s;
plot(time, x);
hold on;
plot([time(1) time(end)],[m m],'g',[time(1) time(end)],[H H], 'r',[time(1) time(end)],[L L],'r');
legend('Исходный сигнал','оценка m_x','оценка \sigma');
hold off;
В таблице 1.1 приведены результаты расчета параметров исходного сигнала по выражениям
Таблица 1.1 – Числовые параметры исходного сигнала
Параметр сигнала |
Значение |
Оценка математического ожидания |
-0.0035 |
Оценка дисперсии |
0.0115 |
Оценка СКО |
0.1073 |
Энергия сигнала Е |
3.5205e+003 |
Длительность сигнала Т, с |
6.9328 |
Рисунок 1.1– График исходного сигнала
Спектральный анализ сигнала
Амплитудный спектр сигнала –
Фазовый спектр сигнала –
Y=fft(x);
f=1/T*(0:n/2-1);% ось частот
Y=2*abs(Y(1:n/2))/n; % Модуль |Y|
plot(f,Y);
xlim([0*10^3 6*10^3]);
Рисунок 1.2 – График амплитудного спектра
По графику 1.2 определяем точное значение максимума для выделенных частот и значения максимумов. Полученные значения занесли в таблицу 1.2.
Таблица 1.2 – Таблица гармоник полезного сигнала
№ |
Значение, Гц |
Амплитуда |Y| |
|
1568 |
0,01039 |
|
2105 |
0,01228 |
2 Выбор метода предварительной обработки сигнала
As=50;
Ap=0.6;
dfp=60;
dfs=110;
fc1=1568;
fc2=2105;
flp1=fc1-dfp;
fhp1=fc1+dfp;
fls1=flp1-dfs;
fhs1=fhp1+dfs;
flp2=fc2-dfp;
fhp2=fc2+dfp;
fls2=flp2-dfs;
fhs2=fhp2+dfs;
dp=10^(Ap/20)-1;
ds=10^(-As/20);
Таблица 2.1 – Частоты фильтра
Частота, Гц |
Полоса пропускания, Гц
|
Полоса подавления, Гц
|
||
flp |
fhp |
fls |
fhs |
|
f1
|
1508 |
1628 |
1398 |
1738 |
F2
|
2045 |
2165 |
1935 |
2275 |
Таблица 2.2– Значения отклонений в полосе пропускания и подавления
dp |
ds |
0.0715 |
0.0032 |
2.2 Вычисление коэффициентов фильтра
F=[1398 1508 1628 1738 1935 2045 2165 2275];
A=[0 1 0 1 0];
D=[0.0032 0.0715 0.0032 0.0715 0.0032];
[n, F0, A0, W]=firpmord(F, A, D, 44100);
b_filt=firpm(n, F0, A0, W);
%Построение график АЧХ фильтра:
freqz(b_filt, 1, 1024, 44100);
%Сохранение коэффициентов фильтра:
save('b_filt.mat','b_filt');
%Построение характеристики фильтра в среде матлаб:
in = load('b_filt.mat');
b_filt = in. b_filt;
Af = [0 0 1 1 0 0 0 1 1 0 0];
F = [fls1 flp1 flp1 fhp1 fhp1 fhs1 flp2 flp2 fhp2 fhp2 fhs2];
nf = 1024; % количество точек аппроксимации
[h, w] = freqz(b_filt, 1, nf);
plot(F, Af, 'color', 'r');
hold on;
f = 0:(44100/2)/nf: 44100/2-1;
plot(f, abs(h), 'color', 'b');
hold off;
legend('Идеальный', 'Результат расчета');
% Фильтрация сигнала в среде Matlab:
data = load('Data2.txt'); % считывание исходного сигнала из файла
s_in = data;
k = load('b_filt.mat'); % весовые коэффициенты фильтра хранятся в векторе b_filt
s_out =filtfilt(b_filt, 1, s_in); % фильтрация исходного сигнала
subplot(2,1,1), plot(time, data), grid;
hold on
subplot(2,1,1), plot(time, s_out,'r'), grid;
hold off
Y = fft(s_out);
c=305736
f=1/T*(0:c/2-1);
Y=2*abs(Y(1:c/2))/c;
subplot(2,1,2), plot(f, Y), grid;
|
Значение, Гц
|
Амплитуда |Y|
|
f1 |
1568 |
0.01266 |
f2 |
2105 |
0.01497 |
clear;
clc;
data=load('E:\шукурова\Test-data\fx1836.mat');
fx=data.fx;
fd=data.fd;
k=load('E:\шукурова\b_filt.mat'); % весовые коэффициенты фильтра хранятся в векторе b_filt
N = length(fx); % количество отсчетов исходного сигнала
T = length(fx)/fd; % длительность сигнала, с
s_out = fftfilt(k.b_filt, fx); % фильтрация исходного сигнала
Y = fft(s_out); % Преобразование Фурье
f = 1/T * (0:N/2-1); % Ось частот
Y = 2 * abs(Y(1:N/2)) / N; % Модуль |Y|
df = fd/N; %шаг по оси частот
m1 = max(Y(330*T:400*T));
m2 = max(Y(2000*T:2150*T));
m3 = max(Y(2600*T:2750*T));
M = [m1 m2 m3];
EthL = [0.007 0.011 0.007];
Ethh = [0.0088 0.0143 0.0088];
count = 0;
for i = 1:3
if(M(i)>EthL(i)&& M(i)<Ethh(i))
count = count + 1;
disp (i);
end;
end;
if count ==3
disp ('+');
else
disp ('-');
end;
disp (M);