Applide Programming Tools
Лекция 3

Продолжим работу над прототипом программы автоматической классификации стационарных временных рядов с линейчатым спектром.

Спектральный анализ в "бытовых" условиях
Параметры, определившие процесс измерений:
1) значения частоты дискретизации
fd=8000, что соответствует реальной частоте дискретизации в бытовой аудио карте;
2) чувствительность
sens = 0.02
3)
С полученными данными проведен Фурье-анализ.
4) Для выделения ведущих спектральных компонент массив энергий спектральных компонент отсортирован по возрастанию мощности компоненты.


График  входного процесса при постоянной температуре
(
данные, полученные в результате дискетизации с частотой Fd=8000).

 

Подготовим данные для
Фурье-анализа

gg=floor(log(at)/log(2));

% gg - наибольший показатель степени,

% для которого 2^gg укладывается на

% считанном блоке отсчетов

ffl=2^(gg+1);

% Длина FFT, возможно,

%  с дополнительными нулями

Rr=1:ffl/2;

% Берем значимую область частот,  

% удаляя симметричные данные

Rr=rr(:);

%  Преобразуем в вектор-колонку

lr=length(rr);

% Длина этого вектора

 

 

l    axe=2:lr;

   % Это нужно для удаления нулевой

    % компоненты

l    aftt=[];

    % Инициализация массива мощностей

    % частотных компонент

l    q12=[];

    % Инициализация массива мощностей и

    % номеров частотных компонент

l    yy=[];

    % Инициализация массива данных ряда

 

 

l     for ts=0:(Tdiap-1)

% Начало цикла по температуре

l     pp=(1-sens*ts)*pp0

% Изменяем настройку

l     y=dtmp(t+rand);

% Моделируем блок данных от генератора

l     yy=[yy,y];

% Добавляем его в массив

l     ft=fft(y,ffl);

% Находим Фурье-представление данных

l     rr=ft(axe);

% Удалим нулевую компоненту спектра

l     pow=rr.*conj(rr);

 % Находим мощности спeктральных компонент

l     aftt=[aftt,pow];

l     % Добавляем вектор мощностей спектра в массив afft

l     % для построения графика

 

 

[q1,q2]=sort(pow);

 % Сортируем pow по возрастанию мощностей,

% сохраняя номера в q2

q12=[q12,q1,q2];

% Добавим в q12 номера и энергии ведущих 

% компонент

end

% Конец цикла по температуре

nmax=q12(lr-1:-1:lr-6,:);

 % Массив номеров и энергий  

%  максимальных спектральных компонент

 

 

Цена деления по шкале частот=31.25

Частота Найквиста=4000

Мощности и номера ведущих спектральных компонент

nmax =

  1.0e+003 *

    3.9926    0.0550    4.2701    0.0480

    1.8613    0.1100    2.0172    0.0960

    1.6668    0.0540    1.5181    0.0470

    1.3838    0.0010    1.4645    0.0010

    1.1451    0.1090    0.9025    0.0950

    0.6819    0.0560    0.8621    0.0490

 

Ведущие спектральные частоты (гц)

fmax =

  1.0e+003 *

    0.8594    0.7500

    1.7188    1.5000

    0.8438    0.7344

    0.0156    0.0156

    1.7031    1.4844

    0.8750    0.7656

 

 

Проектирование разделяющих режимы фильтров

Как видно из графиков и таблиц, можно попробовать разделить сигналы, порожденные работой приборов в различных режимах с помощью полосовых фильтров, полоса пропускания которых находится в пределах [800,900] и [1450,1550] герц для первого и второго режимов соответственно. При этом нужно будет оценить мощность блоков, полученных в результате фильтрации сигналов и отнести сигнал к тому из классов, который соответствует номеру фильтра с большей выходной мощностью.

Проектирование и тестирование фильтров, разделяющих режимы

format long 

[b1,a1]=butter(5,[800,900]/4000)

% Проверим, что фильтр действительно пропускает

% значительно лучше первую кривую, чем вторую.

% Использованные при построении графиков массивы

% измерений записаны по колоннам матрицы yy.

     u=[];

     for ts=1:2

             uu=yy(:,ts);

             uu=filter(b1,a1,uu);

             u=[u,uu];

      end

 

Проектирование и тестирование фильтров, разделяющих режимы

 

subplot(2,1,1), plot(t(1:N),u(1:N,1)),title(' График для первого режима '), grid

subplot(2,1,2), plot(t(1:N),u(1:N,2)),title(' График для второго режима '), grid

 

 

Количественная оценка результатов фильтрации

l    id=mean(abs(u))

                    0.1997    0.0181

Использованы функции MEAN

"среднее" и ABS - "абсолютное

значение". MEAN(S) вектор-строка

средних по колонкам матрицы S.

Как видите, для принятия решения, какой из двух режимов перед Вами, есть достаточно различий.

Результат, который потребуется для преобразования прототипа в рабочий код

l    Вот коэффициенты полосового фильтра Баттеруорта пятого порядка.

l      b1 =

l      1.0e-006 *

l      Columns 1 through 4

l      0.08245334349078  0  -0.41226671745389  0

l        Columns 5 through 8

l        0.82453343490777  0  -0.82453343490777  0

l        Columns 9 through 11

l        0.41226671745389  0  -0.08245334349078

 

l    a1 =

l     1.0e+002 *

l      Columns 1 through 4

l      0.01000000000000  -0.07659493144971   0.28216797587454  -0.65057034774127

l      Columns 5 through 8

l      1.03455194518947  -1.18253029911747   0.98325939916969  -0.58765947170449

l      Columns 9 through 11

l       0.24224504558982  -0.06249765983888   0.00775504905239

l    

 

Совершенно аналогично проверяется гипотеза для второй частотной полосы. Таким образом, в результате стендовых расчетов проверяется возможность реализовать алгоритм, а также вычисляются константы, необходимые для преобразования (кодирования) алгоритма в исполняемый модуль.