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

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

% 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:

%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

te: 12/07/07

%Syntax: diff = deltacoeff(Matrix);

lculates 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)

<= 2*Convert.ToDouble(D.Value2.ToString())) return 1;return 0;

}

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() ==

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;">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() ==

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

0)button2.Enabled=true;">{.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");

}

}

}