Подготовка данных для кластеризации.




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

Целью работы является расчет характеристик процесса РДС, с использованием измеренных параметров процесса РДС.

Приступим к описанию последовательности действии и их значимости для достижения поставленной цели. Необходимо присвоить все начальные значения, а также некоторые измеренные параметры процесса РДС. Задается частота дискретизации АЦП, также высчитываются коэффициенты преобразования данных тока и напряжения - они потребуются для получения значений тока и напряжения. В наличии имеются 16 файлов, в которых содержатся данные, полученные с АЦП, причем в 8 из них содержатся значения тока и напряжения, считанные при правильной работе, а в других 8 - неправильной, эти данные потребуются нам для обучения сети. Отобразить это в программе можно следующим образом:

#коэффициент преобразования тока

ki = 2.56*500/(2048*0.75);

#для напряжения

ku = 2.56*40/2048;

#частота АЦП

Fs = 2000;

F = ['1_hr.lct'; '1_pl.lct'; '2_hr.lct'; '2_pl.lct';

'3_hr.lct'; '3_pl.lct'; '4_hr.lct'; '4_pl.lct';

'5_hr.lct'; '5_pl.lct'; '6_hr.lct'; '6_pl.lct';

'7_hr.lct'; '7_pl.lct'; '8_hr.lct'; '8_pl.lct';]

X=zeros(0,31);

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

Для того чтобы поделить на 3 массива используем функции find – она считает количество ненулевых элементов и size – она предназначена для определения размера матрицы, количества ее строк и столбцов. Таким образом, описанные выше действия в программе можно отобразить так:

for f=1:16

f

M=load(F(f,:)); #Загрузка файлов

I= abs(ki*M(:,1)); #ток равен первый столбец из файла*ki по модулю

U= abs(ku*M(:,2)); #напряжение равно второй столбец из файла*ku по модулю

M=cat(2,U,I); #Склейка по горизонтали

M=sort(M,1); #Сортировка

n1=length(find(M(:,1)<12)); #колличество номеров чисел <12

n2=length(find(M(:,1)<40)); #колличество номеров чисел <40

n3=length(M(:,1)); #общее кол-во чисел

B1=M(1:n1,1); #Напряжение короткого замыкания

B2=M(1:n1,2); #Ток КЗ

B3=M(n1+1:n2,1); #Напряжение в рабочем режиме

B4=M(n1+1:n2,2); #Ток а РР

B5=M(n2+1:n3,1); #Напряжение холостого хода

B6=M(n2+1:n3,2); #Ток ХХ

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

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

A = cat(2, moments(B1), moments(B2));

A = cat(2, A, moments(B3));

A = cat(2, A, moments(B4));

A = cat(2, A, moments(B5));

A = cat(2, A, moments(B6));

Далее определяем количество коротких замыканий:

U1 = U(1:end-1);

U2 = U(2:end);

N1 = (U1>12);

N2 = (U2<12);

KKZ = length(find(and(N1,N2)));

FKZ=KKZ/(n3/Fs);

A = cat(2, A, FKZ);

X = cat(1,X,A);

end

 

Предобработка данных.

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

.

Отобразить это в программе можно следующим образом:

MS = mean(X);

SS = std(X);

for NS=1:31 #номер столбца

for i=1:16

X(i,NS)=(X(i,NS)-MS(NS))/SS(NS);

end

end

Далее нужно произвести нормирование входных данных, для приведения данных к единичному масштабу (привести в сопоставимый вид). Воспользовавшись функцией corrcoef, построим матрицу коэффициентов корреляции, для выявления наиболее значимых параметров. Удалим один фактор из коррелирующей пары, которой соответствуют значения коэффициентов корреляции превысили 0,8 в матрице А. Отобразить это в программе можно следующим образом:

 

deli=zeros(0,1);

A = corrcoef(X);

for i=1:31 #номер столбца

for j=i+1:31

if (A(j,i)>0.8)

deli=cat(1,deli,i);

end

end

end

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-06-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: