Автоматизированная система диагностики дефектов в конструкциях электронных средств на основе акустических сигналов

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    405,61 Кб
  • Опубликовано:
    2012-07-13
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Автоматизированная система диагностики дефектов в конструкциях электронных средств на основе акустических сигналов

Государственное бюджетное образовательное учреждение

высшего профессионального образования

«СУРГУТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ХМАО-Югра»

Факультет информационных технологий

Кафедра автоматизированных систем обработки информации и управления

 




КУРСОВАЯ РАБОТА

по дисциплине «Моделирование систем»

Автоматизированная система диагностики дефектов в конструкциях электронных средств на основе акустических сигналов

Студент гр. 1192 Волков А. Д.

Руководитель Увайсов С.У.






Сургут 2012г.

АННОТАЦИЯ

В работе описано создание автоматизированной системы диагностики конструктивных дефектов на основе акустических сигналов и методика анализа звукового сигнала. Расчет проводится с помощью спектрального анализа звукового сигнала.

ВВЕДЕНИЕ

Виброакустическая диагностика, являясь разделом технической диагностики, есть отрасль знаний, включающая в себя теорию и методы организации процессов распознавания технических состояний машин и механизмов по исходной информации, содержащейся в виброакустическом сигнале.

Вибродиагностика - это одна из относительно новых отраслей науки, основанная на предположении, что любой объект (технический, биологический и т. д.) может быть представлен в виде колебательной системы и спектра вибросигнала, стимулированного либо тестом, либо функциональными возмущениями, содержащих информацию о техническом состоянии, дефектах и качестве объекта. Способ извлечения и расшифровки этой информации составляют основную задачу диагностики, которая в последнее время решается с помощью вычислительной техники. Различают функциональную и тестовую диагностику. Под функциональной диагностикой чаще всего подразумевают виброакустическую диагностику, а под тестовой - определение технического состояния с помощью искусственно создаваемой вибрации.

На основании диагноза определяется оптимальный режим эксплуатации агрегата в условиях возникшей неисправности и технология устранения дефекта и восстановления работоспособности агрегата. Чем надежней и конкретней диагноз, тем ниже затраты, связанные с восстановлением агрегата[2].

Глава 1 посвящена постановке задачи: определение цели данной работы и основных характеристик разрабатываемой автоматизированной системы диагностики по средствам акустических сигналов.

В главе 2 осуществлен аналитический обзор пакета программ, которые использовались в процессе моделирования.

В главе 3 представлен алгоритм анализа звукового сигнала, структурная схема автоматизированной системы, а также описывается интерфейс разработанной программы.

Проверка работы созданной системы в главе 4. Она осуществляется путем подачи различных wav-файлов в качестве входных данных на вход программы.

В результате получаем ответ о наличии признаков различных дефектов в звуковом сигнале и на основе этого выстраиваем представление о состоянии источника сигнала.

Для более детального изучения рассматриваемого вопроса можно обратиться к списку использованной литературы, приведенному в конце данной работы.

1.  
ПОСТАНОВКА ЗАДАЧИ

Цель работы: создать автоматизированную систему диагностирования дефектов в конструкциях электронных средств на основе анализа акустических сигналов, снимаемых с соответствующего датчика, которая сравнивала бы получаемые данные с образцами из банка эталонных звуковых образов с характерными для них параметрами и описанием.

Для этого необходимо провести моделирование звуковых сигналов генерируемых вследствие конструктивных дефектов. Далее нужно осуществить анализ полученных звуковых сигналов, с целью определения характерных для них параметров. При отсутствии соответствующего лабораторного оборудования, предлагается использовать корпус акустической гитары со встроенным микрофоном для моделирования звуковых сигналов. Микрофон гитары изолирован корпусом от внешней среды, что дает наименьший уровень постороннего шума, а так же корпус гитары достаточно сильно усиливает звуки воздействия на него, что позволяет получать достаточно чистый и громкий звуковой сигнал воздействий на корпус, тем самым создать физическую модель конструкции «с шумами». Затем нужно определить критерии для регистрации и классификации дефекта.

Разрабатываемая автоматизированная система должна обеспечивать:

1.   Использование банка дефектов, который содержит характеристики звуковых сигналов дефектов.

2.       Анализ звуковых сигналов.

.        Графическое представление звукового сигнала.

2.      
ОБЗОРНО-АНАЛИТИЧЕСКАЯ ГЛАВА

На этапе поиска информативных признаков ограничивают число измеряемых параметров вибрации, шума и ударов. При этом из множества параметров, характеризующих вибрационный процесс, выделяют только те, которые прямо или косвенно характеризуют состояние объекта. По этим параметрам формулируют информативную систему признаков, используемых при диагностировании.

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

В низкочастотном диапазоне чаще измеряют параметры виброперемещения, в среднечастотном - виброскорости, а в высокочастотном - виброускорения[9].

В зависимости от спектрального состава, распределения уровней вибрации в диапазоне частот и во времени, а также от нормирования допустимого уровня измеряют амплитудные, средние или средние квадратические значения. Основным преимуществом измерения, средних квадратических значений является независимость этих значений от сдвигов фаз между отдельными составляющими спектров измеряемой вибрации.

Помимо этих средств, существуют программы, позволяющие анализировать звуковой сигнал: SoundForge, WaveLab, Adobe Audition, SpectraPLUS и др. Среди математических пакетов общепризнанными лидерами являются MathCAD, MatLab, Mathematica и т.д.[13].

Так же есть возможность создать специализированную программы для автоматизированной системы с помощью языков программирования, таких как C/C++, C#, Delphi и др. С использование стандартной для Windows библиотеки DirectSound или ASIO, SDK которой предоставляет в свободном доступе по лицензионному соглашению компания Steinberg[12].

Для написания программы анализа звукового сигнала было решено использовать математический пакет MatLab [11]. Данный пакет MATLAB фирмы «The MathWorks», является мировым стандартом в области научных и технических расчетов. Базовая библиотека MATLAB и пакет расширения Signal Processing содержат большое количество функций, позволяющих быстро и наглядно осуществлять и исследовать различные алгоритмы, связанные с цифровой обработки сигнала.

Для написания интерфейса для программы анализа звукового сигнала использовался пакет программ «Microsoft Visual Studio 2008», объектно-ориентированный язык C#, являющийся языком разработки приложений для платформы Microsoft .NET Framework. Пакет «Microsoft Visual Studio 2008» является одним из линейки продуктов компании Microsoft, включающий интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данный пакет позволяет интегрировать программы написанные в MatLab и взаимодействовать с ними[14]. В данной системе можно быстро и качественно разрабатывать графические приложения, используя готовые компоненты.

Также требуется подключение встроенной библиотеки .NET: Microsoft.Office.Interop.Excel для взаимодействия с банком дефестов реализованной в электронной таблицы.

На сегодняшний день существует полноценная автоматизированная система диагностики ZETLab [9], специализирующийся на анализе различных сигналов и мониторинга систем. ZETLab представляет собой аппаратно-программный комплекс, включающий в себя различные датчики сигналов, АЦП/ЦАП и программное обеспечение. Данная система является коммерческим продуктом и не имеет возможности создавать базы данных сигналов и сравнивать входящий сигнал с ней. Поэтому на данном этапе необходимо использовать вышеуказанных компонентов для создания, методики анализа, сравнения сигналов и удобного интерфейса для пользователя.

3.    
ОСНОВНАЯ ГЛАВА

3.1.  Основная методика анализа и сравнения звуковых сигналов

Анализ и сравнение звуковых сигналов заключается в следующем.

1. Физическое моделирование генерации звуковых сигналов дефектов с помощью корпуса акустической гитары и встроенного в него микрофона. Звуковые сигналы необходимо записать в wav-файл с помощью Adobe Audition. Для более детальной демонстрации примера работы программы, предлагается записать по 10-15 отдельных сигналов двух разных типов дефектов.

. Полученный в результате физического моделирования звуковой сигнал следует исследовать на наличие уникальных параметров и характеристик. Для этого необходим математически пакет MatLab с его функциями обработки сигнала и возможностью разложить сигнал в ряд Фурье. В ходе анализа требуется выделить несколько критериев, по которым сигнал будет распознаваться. В качестве критериев будет выступать матрица, полученной с помощью разложения в ряд Фурье. Столбцы матрицы соответствуют частотам, а строки временному промежутку.

. После получения критериев, следует оформить банк дефектов и внести в него значения параметров сигнала. Для оптимизации предлагается внести в банк дефектов только среднее значение параметров и допустимый интервал погрешности, полученных с помощью статистического метода на основе выборки[15]. Банк дефектов в данной работе реализован с помощью таблицы Excel.

. Далее следует этап диагностики звукового сигнала, который состоит в следующем:

.1.      запись в wav-файла со случайным набором звуковых сигналов с физической модели;

3.2.    Импортирование сигнала из wav-файла в программу автоматизированной системы диагностики.

.3.      Анализ сигнала и определения значения параметров на отдельных участков сигнала необходимых для распознавания дефектов.

.4.      Сравнение полученных значений параметров со значениями в банке дефектов.

.5.      В случае выявления совпадения критериев сравнения более чем на 85% выдача сообщения пользователю о наличие признаков определенных дефектов в понятном для пользователя виде.

Следует отметить, что при отсутствии имитационной модели генерации звуковых сигналов, должна быть обеспечена возможность использовать внешние источники данных в виде wav-файлов.

3.2.    Структурная схема автоматизированной системы

На рис. 1 представлена структурная схема автоматизированной системы. Ниже дано краткое описание функций её блоков.

Рис.1. Структурная схема системы

Как уже отмечалось ранее, при отсутствии имитационной модели генерации сигналов, предусмотрен ручной ввод данных в программу автоматизированной системе в виде заранее записанных в программе Adobe Audition wav-файлов. Это осуществляется оператором. Так же стоит учесть, что программа не имеет полноценной базы дефектов. Банк дефектов составляется разработчиком, и нет возможности пополнять его процессе эксплуатации. В данной курсовой работе предусмотрен именно такой вариант. Но при дальнейшей модификации данной программы будет реализоваться база данных, а так же возможность записи сигнала поступающего с АЦП его анализ в реальном времени без остановки записи с возможностью занесения результатов в базу данных.

В банке дефектов хранятся характеристики звуковых сигналов, которые затем потребуются при их. Он хранит такие параметры сигнала, как: название дефекта, амплитудно-частотные характеристики и доверительный интервал значений.

Сигнал поступает на вход программы автоматизированной системы, где подвергается анализу. Модуль анализа Diag представляет результат в виде матрицы, строки которой соответствуют временному отрезку, а столбцы частоте. Данный модуль использует алгоритм по нахождению Mfcc коэффициентов реализованный в [6]. Он настроен на работу с wave-файлами частота дискретизации которых равна 44100Гц. Это накладывает ограничения на входящие данные. Листинг модуля представлен в Приложении 1.

3.3.    Описание интерфейса программы

Интерфейс реализован в виде окна с двумя кнопками «График» и «Диагностика», а так же области для выводимых пользователю сообщений. Вид интерфейса при первоначальном запуске программы представлен на рис.2.

Рис. 2 Окно программы DiagSound

Кнопка «График» предназначена для отображения диагностируемого сигнала в виде график. Она не доступна пока не импортировали сигнал в виде wave-файла при помощи меню.

Кнопка «Диагностика» предназначена для запуска процедуры диагностики сигнала. Она не доступна пока не импортировали сигнал в виде wave-файла и банка дефектов при помощи меню. После ее нажатия программа начнет анализировать сигнал и сверять полученные с помощью анализа данные с данными из банка дефектов. Процесс диагностики занимает некоторое время, в которое к программе нельзя будет обратиться. По завершение процесса диагностики в области сообщений появятся информация о найденных признаков дефектов.

4.
ПРОВЕРКА РАБОТЫ СИСТЕМЫ

Для проверки работы системы было записано при помощи физической модели конструкций «с шумами» и программы Adobe Audition 3, два wave-файла с сигналами дефектов «стука» и «треска» по 10 секунд каждый, информацию о которых имеется в банке дефектов. Частота дискретизации wave-файлов равна 44100Гц, что допустимо для программы. Проведем диагностику этих сигналов.

Загрузим wave-файл «Стуки.wav» содержащий звуковые сигналы стуков. Посмотрим график сигнала с помощью кнопки «График», чтобы убедиться о правильности импортирования wave-файла. График представлен на рис. 3

Рис. 3 График сигнала из wave-файла «Стуки.wav»

Как видно из графика, сигнал загружен правильно и содержит в себе 11 ярко выраженных всплеска амплитуды. Загрузим банк дефектов Data.xlsx с помощью меню и проведем диагностику данного сигнала, нажав кнопку «Диагностика». Результат диагностики представлен на рис. 4.

Рис. 4 Результат диагностики сигнала «Стук.wav»

Время процедуры диагностирования 2 мин. 27 сек. Как видно из рисунка 4, программа выдала гораздо больше сообщений о наличие присутствия признаков дефекта «стук», чем самих звуков данного дефекта в сигнале. Это обусловлено тем, что программа сверяет последовательно отрезки сигнала по 0,2сек., что не предусматривает того, что сигнал дефекта может быть длиннее этого отрезка и находиться одновременно в нескольких таких рядом стоящих отрезках. В последующей модернизации сигнала необходимо учесть данный факт. Однако проанализировав данный сигнал на слух с помощью Adobe Auditio 3 убеждаемся, что все сообщения, выданные программой DiagSound соответствуют действительности.

Загрузим wave-файл «tre.wav» с набором сигналов дефекта «Треск». Построим его график. График представлен на рис. 5

Рис.5 График сигнала из wave-файла «tre.wav»

Как видно из графике, сигнал не имеет больших пиков, как в случае с «Стук.wav», что говорит о низкой амплитуде сигналов дефектов. Проведем диагностик данного сигнала. Результат диагностики сигнала представлен на рис. 6. Время диагностики 3мин. 17сек.

Рис. 6 Результат диагностики сигнала «tre.wav»

Как видно из рисунка 6 сообщений так же как и в первом случае выдано больше, чем ожидалось и процент схожести ниже. При анализе на слух данного сигнала с помощью Adobe Audition обнаруживаем наличие в сигнале постороннего шума (шорканье ногтей по корпусу гитары, скрип струн, щелчки, возникшие из-за несовершенства АЦП и др.). Данная программа не учитывает погрешности вносимые внешним воздействием, что говорит о несовершенстве данной программы. При последующей модернизации программы необходимо будет учесть данный факт и добавить модуль по выявлению и очищению сигнала от постороннего шума.

Так же необходимо отметить ресурсоемкость данной программы. На рис. 7 видно, что программа из-за больших объемов данных занимает около 144мб оперативной памяти, что не приемлемо для практического применения. Так же видно, что большая часть времени тратиться на работу с банком дефектов реализованного в Excel-таблице. При модернизации программы необходимо создать подходящую базу данных, обеспечивающую более быструю работу с данными.

Рис. 7 Ресурсоемкость программы DiagSound

ЗАКЛЮЧЕНИЕ

В данной курсовой работе была создана автоматизированная система диагностирование дефектов конструкций электронных устройств и был составлен банк дефектов, реализованный в Excel-таблице, содержащий информацию о двух видов дефектов. Данная система демонстрирует работу модуля анализа Diag со звуковыми сигналами, работу с банком дефектов и алгоритм сравнения полученных данных с помощью модуля Diag. Таким образом были решены поставленные для курсовой работу задачи. Система не пригодна к практическому применению из-за следующих недостатков:

·  Большие вычислительные затраты

·        Отсутствия полноценной базы данных

·        Отсутствие возможности записи сигнала

·        Отсутствие модуля для выявления постороннего шума

·        Низкая производительность

·        Существенная погрешность

Для практического применения автоматизированную систему необходимо модернизировать и исключить перечисленные недостатки. А так же следует оптимизировать код для быстродействия достаточного для диагностики звукового сигнала в реальном времени.

алгоритм диагностика дефект акустический сигнал

СПИСОК ЛИТЕРАТУРЫ

1.     В. В. Клюева «Неразрушающий контроль: Справочник в 7 томах» М.: Машиностроение, 2005.-829с

2.       Справочник по технической акустике: Пер. с ием./ Под ред. Хекла и Х. А. Мюллера. - Л.: Судостроение, 1980.-440с., ил. 329.-ИСБН.

.        Борис Васильевич Павлов «Акустическая диагностика механизмов» Изд. «Машиностроение» Москва 1971г.

.        Увайсов Расул Исаевич «МЕТОД ДИАГНОСТИКИ ДЕФЕКТОВ БОРТОВЫХ РАДИОТЕХНИЧЕСКИХ УСТРОЙСТВ», Автореферат диссертации, Москва 2008г.

.        Кинтцель Т. «Программирование звука на ПК=A Programmer`s Guide to Sound»:Пер. С англ.-М.:ДМК Пресс, 2005.-432с., ил.

ПРИЛОЖЕНИЕ

1.     Модули MatLab

1.1.  Листинг модуля Diag.m

function res=Diag(Name)

[y,fs]=wavread(Name);=myVAD(y);=mfccf(13,speechIn,fs);

1.2.    Листинг myVAD.m

trimmedX = myVAD(x)

% Syntax: trimmedSample = myVAD(samplex);

% This function accepts an audio sample 'samplex' as input and returns a

% trimmed down version with non-speech sections trimmed off. Also known as

% voice activity detection, it utilises the algorithm due to Rabiner &

% Sambur (1975)

= 0.1; % Initial silence duration in seconds= 0.01; % Frame width in seconds= 0.005; % Frame shift in seconds= 16000; % Sampling Frequency= 0;= 0;= 0;= 0;= 0; % Stores forward count of crossing rate > IZCT= 0; % As above, for backward count= 40; % Zero crossing comparison rate for threshold_sam = fix(Ts*Fs); % No of Samples/window_sam = fix(Tsh*Fs); % No of samples/overlap= length(x);= fix((lengthX-w_sam)/o_sam)+1; % Number of segments in speech signal= fix((Ini-Ts)/Tsh)+1; % Number of segments in silent period= hamming(w_sam);= o_sam*(segs-1)+1; % Start index of last segment

= 1:o_sam:Limit; % Vector containing starting index for each segment_Vector = zeros(1,segs); % Vector to hold zero crossing rate for all segments

% Below code computes and returns zero crossing rates for all segments in

% speech samplet = 1:segs= 0;= (t-1)*o_sam+1;r = nextIndex+1:(nextIndex+w_sam-1)(x(r) >= 0) && (x(r-1) >= 0)

(x(r) >= 0) && (x(r-1) < 0)= ZCRCounter + 1;(x(r) < 0) && (x(r-1) < 0)(x(r) < 0) && (x(r-1) >= 0)= ZCRCounter + 1;_Vector(t) = ZCRCounter;

% Below code computes and returns frame energy for all segments in speech

% sample_Vector = zeros(1,segs);u = 1:segs= (u-1)*o_sam+1;= x(nextIndex:nextIndex+w_sam-1).*win;_Vector(u) = sum(abs(Energy));

= mean(Erg_Vector(1:sil)); % Mean silence energy (noise energy)= max(Erg_Vector); % Maximum energy for entire utterance= 0.03 * (IMX-IMN) + IMN; % I1 & I2 are Initial thresholds= 4 * IMN;= min(I1,I2); % Lower energy threshold= 5 * ITL; % Upper energy threshold= mean(ZCR_Vector(1:sil)); % mean zero crossing rate for silence region= std(ZCR_Vector(1:sil)); % standard deviation of crossing rate for

% silence region= min(ZTh,IZC+2*stdev); % Zero crossing rate threshold= zeros(1,lengthX); % Four single-row vectors are created= indexi; % in these lines to facilitate computation below= indexi;= indexi;

% Search forward for frame with energy greater than ITUi = 1:length(Erg_Vector)(Erg_Vector(i) > ITU)= counter1 + 1;(counter1) = i;= indexi(1);

% Search further forward for frame with energy greater than ITLj = ITUs:-1:1(Erg_Vector(j) < ITL)= counter2 + 1;(counter2) = j;= indexj(1)+1;

_Vectorf = fliplr(Erg_Vector);% Flips round the energy vector

% Search forward for frame with energy greater than ITU

% This is equivalent to searching backward from last sample for energy > ITUk = 1:length(Erg_Vectorf)(Erg_Vectorf(k) > ITU)= counter3 + 1;(counter3) = k;= indexk(1);

% Search further forward for frame with energy greater than ITLl = ITUf:-1:1(Erg_Vectorf(l) < ITL)= counter4 + 1;(counter4) = l;

= length(Erg_Vector)-indexl(1)+1;% Tentative finish index

% Search back from start index for crossing rates higher than IZCT

= min(start,25);m = start:-1:start-BackSearch+1= ZCR_Vector(m);rate > IZCT= ZCRCountb + 1;= m;ZCRCountb > 3= realstart; % If IZCT is exceeded in more than 3 frames

% set start to last index where IZCT is exceeded

% Search forward from finish index for crossing rates higher than IZCT= min(length(Erg_Vector)-finish,25);n = finish+1:finish+FwdSearch= ZCR_Vector(n);rate > IZCT= ZCRCountf + 1;= n;ZCRCountf > 3= realfinish; % If IZCT is exceeded in more than 3 frames

% set finish to last index where IZCT is exceeded

_start = FrmIndex(start); % actual sample index for frame 'start'_finish = FrmIndex(finish-1); % actual sample index for frame 'finish'= x(x_start:x_finish); %T rim speech sample by start and finish indices

1.3.    Листинг mfsscf.m

FMatrix=mfccf(num,s,Fs)

% Syntax: M=mfccf(num,s, Fs);

% Computes and returns the mfcc coefficients for a speech signal s

% where num is the required number of MFCC coefficients. It utilises the

=512; % Number of FFT points=0.025; % Frame duration in seconds=floor(Fs*Tf); % Number of samples per frame=24; % Number of mel filters=length(s); % total number of samples in speech=0.01; % Frame step in seconds=Fs*Ts; % Frame step in samples=1;=[1, -0.97]; % a and b are high pass filter coefficients=floor(l/FrameStep); % Maximum no of frames in speech sample=zeros(noFrames-2, num); % Matrix to hold cepstral coefficients=1:num; % Lifter vector index=1+floor((num)/2)*(sin(lifter*pi/num));% raised sine lifter version

mean(abs(s)) > 0.01=s/max(s); % Normalises to compensate for mic vol differences

% Segment the signal into overlapping frames and compute MFCC coefficientsi=1:noFrames-2=s((i-1)*FrameStep+1:(i-1)*FrameStep+N); % Holds individual frames=sum(frame.^2); % Frame energy=max(Ce1,2e-22); % floors to 2 X 10 raised to power -22=log(Ce2);=filter(b,a,frame); % High pass pre-emphasis filter=framef.*hamming(N); % multiplies each frame with hamming window=fft(F,N); % computes the fft=melbankm(fn,n,Fs); % creates 24 filter, mel filter bank=1+floor(n/2);=log10(melf*abs(FFTo(1:halfn)).^2);% result is mel-scale filtered=max(spectr1(:),1e-22);=dct(spectr); % obtains DCT, changes to cepstral domain(1)=Ce; % replaces first coefficient=c(1:num); % retains first num coefficients=coeffs.*lifter'; % Multiplies coefficients by lifter value(i, :)=ncoeffs'; % assigns mfcc coeffs to succesive rows i

% Call the deltacoeff function to compute derivatives of MFCC

% coefficients; add all together to yield a matrix with 3*num columns=(deltacoeff(FMatrix)).*0.6; % Computes delta-mfcc=(deltacoeff(d)).*0.4; % as above for delta-delta-mfcc=[FMatrix,d,d1]; % concatenates all together

1.4.    Листинг melbankm.m

[x,mn,mx]=melbankm(p,n,fs,fl,fh,w)

% MELBANKM determine matrix for a mel-spaced filterbank [X,MN,MX]=(P,N,FS,FL,FH,W)

%

% Inputs: p number of filters in filterbank

% n length of fft

% fs sample rate in Hz

% fl low end of the lowest filter as a fraction of fs (default = 0)

% fh high end of highest filter as a fraction of fs (default = 0.5)

% w any sensible combination of the following:

% 't' triangular shaped filters in mel domain (default)

% 'n' hanning shaped filters in mel domain

% 'm' hamming shaped filters in mel domain

%

% 'z' highest and lowest filters taper down to zero (default)

% 'y' lowest filter remains at 1 down to 0 frequency and

% highest filter remains at 1 up to nyquist freqency

%

% If 'ty' or 'ny' is specified, the total power in the fft is preserved.

%

% Outputs: x a sparse matrix containing the filterbank amplitudes

% If x is the only output argument then size(x)=[p,1+floor(n/2)]

% otherwise size(x)=[p,mx-mn+1]

% mn the lowest fft bin with a non-zero coefficient

% mx the highest fft bin with a non-zero coefficient

%

% Usage: f=fft(s); f=fft(s);

% x=melbankm(p,n,fs); [x,na,nb]=melbankm(p,n,fs);

% n2=1+floor(n/2); z=log(x*(f(na:nb)).*conj(f(na:nb)));

% z=log(x*abs(f(1:n2)).^2);

% c=dct(z); c(1)=[];

%

% To plot filterbanks e.g. plot(melbankm(20,256,8000)')

%

% % Version: $Id: melbankm.m,v 1.3 2005/02/21 15:22:13 dmb Exp $

%

% VOICEBOX is a MATLAB toolbox for speech processing.

% Home page: http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html

%nargin < 6='tz';nargin < 5=0.5;nargin < 4=0;=700/fs;=floor(n/2);=log((f0+fh)/(f0+fl))/(p+1);

% convert to fft bin numbers with 0 for DC term=n*((f0+fl)*exp([0 1 p p+1]*lr)-f0);=ceil(bl(2));=floor(bl(3));any(w=='y')=log((f0+(b2:b3)/n)/(f0+fl))/lr;=floor(pf);=[ones(1,b2) fp fp+1 p*ones(1,fn2-b3)];=[1:b3+1 b2+1:fn2+1];=2*[0.5 ones(1,b2-1) 1-pf+fp pf-fp ones(1,fn2-b3-1) 0.5];=1;=fn2+1;=floor(bl(1))+1;=min(fn2,ceil(bl(4)))-1;=log((f0+(b1:b4)/n)/(f0+fl))/lr;=floor(pf);=pf-fp;=b2-b1+1;=b3-b1+1;=b4-b1+1;=[fp(k2:k4) 1+fp(1:k3)];=[k2:k4 1:k3];=2*[1-pm(k2:k4) pm(1:k3)];=b1+1;=b4+1;any(w=='n')=1-cos(v*pi/2);any(w=='m')=1-0.92/1.08*cos(v*pi/2);nargout > 1=sparse(r,c,v);=sparse(r,c+mn-1,v,p,1+fn2);

1.5.    Листинг Deltacoeff.m

diff = deltacoeff(x)

%Author: Olutope Foluso Omogbenigun

%Email: olutopeomogbenigun at hotmail.com

%University: London Metropolitan University

%Date: 12/07/07

%Syntax: diff = deltacoeff(Matrix);

%Calculates the time derivative of the MFCC

%coefficients matrix x and returns the result as a new matrix.

[nr,nc] = size(x);

= 3; %Number of frame span(backward and forward span equal)= K:-1:-K; %Vector of filter coefficients

%pads cepstral coefficients matrix by repeating first and last rows K times= [repmat(x(1,:),K,1);x;repmat(x(end,:),K,1)];

= filter(b, 1, px, [], 1); % filter data vector along each column= diff/sum(b.^2); %Divide by sum of square of all span values

% Trim off upper and lower K rows to make input and output matrix equal= diff(K + [1:nr],:);

2.    
Код программы DiagSound на языке C#

2.1.  Листинг файла Form1.cs

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;MathWorks.MATLAB.NET.Utility;MathWorks.MATLAB.NET.Arrays;MatLab;

DiagSound

{partial class Form1 : Form

{FileName;obj = new Class1();//MatLabMW ;res = 0;.Office.Interop.Excel.Application ObjExcel = new

Microsoft.Office.Interop.Excel.Application();.Office.Interop.Excel.Sheets ObjSheet;.Office.Interop.Excel.Worksheet ObjWorkSheet;.Office.Interop.Excel.Workbook ObjWorkBook;int srav(double Vect, double Norma, double dx)

{res = 0;(Math.Abs(Vect - Norma) <= dx)++;res;

}

int readMat(Microsoft.Office.Interop.Excel.Range Norma, double Vect, int i, int j)

{.Office.Interop.Excel.Range N;.Office.Interop.Excel.Range D;= Norma.get_Offset(i, j);= Norma.get_Offset(i + 18, j);(Math.Abs(Convert.ToDouble(N.Value2.ToString()) - Vect)

}

Form1()

{();

}

void выходToolStripMenuItem_Click(object sender, EventArgs e)

{();

}

void button1_Click(object sender, EventArgs e)

{.Graf(FileName);

}

void wavфаToolStripMenuItem_Click(object sender, EventArgs e)

{(openFileDialog1.ShowDialog() ==

System.Windows.Forms.DialogResult.OK &&.FileName.Length > 0)= openFileDialog1.FileName;MessageBox.Show("Error");= (MWNumericArray)obj.Diag(FileName);.Items.Add("=================");.Items.Add("Wave-файл:");.Items.Add(openFileDialog1.FileName);.Items.Add("загружен!");.Enabled = true;(openFileDialog2.FileName.Length > 0) button2.Enabled = true;

}

void DataToolStripMenuItem_Click(object sender, EventArgs e)

{(openFileDialog2.ShowDialog() ==

System.Windows.Forms.DialogResult.OK &&.FileName.Length > 0)

{.Items.Add("=================");.Items.Add("База дефектов:");.Items.Add(openFileDialog2.FileName);.Items.Add("загружена!");(openFileDialog1.FileName.Length > 0) button2.Enabled = true;

}

}void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)

{.Show("Программа разработана для курсовой работе\n по теме \"Автоматизированная система диагностики дефектов\nв конструкции электронных устройств\nс помощью акустических сигналов\"\nАвтор программы студент 3-го курса\nСургутского государственного университета \nВолков Александр\nкафедра АСОиУ\n2012г.","О программе");

}

void button2_Click(object sender, EventArgs e)

{= ObjExcel.Workbooks.Open(@openFileDialog2.FileName,.Missing, Type.Missing, Type.Missing, Type.Missing,.Missing, Type.Missing, Type.Missing, Type.Missing,.Missing, Type.Missing, Type.Missing, Type.Missing,.Missing, Type.Missing);= ObjWorkBook.Sheets;.Items.Add("=================");.Items.Add("Начала диагностики");(int sample = 0; sample < (MW.NumberOfElements / 39) - 16; sample=sample+17)

{= 0;=

(Microsoft.Office.Interop.Excel.Worksheet)ObjSheet.get_Item(1);.Office.Interop.Excel.Range ObjRanges;= ObjWorkSheet.get_Range("B2", Type.Missing);

// if (readMat(ObjRanges, (double)MW[ 1 + sample, 1], 0, 0) > 0)(int i = 0; i < 17; i++)

{(int j = 0; j < 39; j++)= res + readMat(ObjRanges, (double)MW[i + 1 + sample, j + 1], i, j);

}(res / 6.63 > 85)

{.Items.Add("Стук " + Math.Round(res / 6.63, 2) + "% [" + (sample / 17) * 0.2 + " ; " + Math.Round((sample / 17) * 0.2 + 0.2, 2) + "] сек");

//sample = sample + 17;

}

{= 0;=

(Microsoft.Office.Interop.Excel.Worksheet)ObjSheet.get_Item(2);= ObjWorkSheet.get_Range("B2", Type.Missing);

// if (readMat(ObjRanges, (double)MW[1 + sample, 1], 0, 0) > 0)(int i = 0; i < 17; i++)

{(int j = 0; j < 39; j++)= res + readMat(ObjRanges, (double)MW[i + 1 + sample, j + 1], i, j);

}(res / 6.63 > 85)

{.Items.Add("Треск " + Math.Round(res / 6.63, 2) + "% [" + Math.Round((sample / 17) * 0.2, 2) + " ; " + Math.Round((sample / 17) * 0.2 + 0.2, 2) + "] сек");

//sample = sample + 17;

}

}

}.Items.Add("Диагностика завершина");.Quit();

}

void добавитьToolStripMenuItem_Click(object sender, EventArgs e)

{.Show("Для диагностики сигнала необходимо сначала\nзагрузить Базу Дефектов и wave-файл содержащий\nсигнал, который нужно продиагностировать, после\nчего нажать кнопку Диагностика. После этого\nпрограмма начнет диагностировать сигнал и\nв случае обнаружения признаков дефекта\nвыводить в список наименование\nдефекта, процент схожести и отрезок времени\nна котором он обнаружил (в секундах)","Help");

}

}

}

Похожие работы на - Автоматизированная система диагностики дефектов в конструкциях электронных средств на основе акустических сигналов

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!