Тепловой контроль и диагностика. Нестерук Д.А - 76 стр.

UptoLike

76
%pcs - главные компоненты (вектора-столбцы)
%vals - собственные значения
%вычитать среднее значение не требуется, т.к. при расчете
%корреляционной или ковариационной матрицы это делается автоматически
% [nr, nc] = size( data);
% mn = mean( data, 2);
% data = data - repmat( mn, 1, nc);
%расчитываем ковариационную или корреляционную матрицу
if( cType == 'cov')
cMat = cov( data');
else
if( cType == 'cor')
cMat = corrcoef( data');
else
error('cType must be: cor or cov');
end
end;
[eVect, eVals] = eig( cMat);
eVals = diag( eVals);
[temp, inds] = sort( -1*eVals);
eVect = eVect( :, inds);
pcs = eVect;
newData = pcs' * data;
vals = eVals( inds);
Для прямого и обратного преобразования исходной трехмерной
последовательности термограмм в двумерную матрицу можно использовать
m-функции «SeqForTimePca» и «TimePcaForSeq»:
function Res = SeqForTimePca( Seq)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%function Res = SeqForTimePca( Seq)
%преобразование 3 мерной последовательности [nr, nc, nt]
%в последовательность [nt, nr*nc]
[nr, nc, nt] = size( Seq);
Res = reshape( Seq, nr*nc, nt);
Res = Res';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function Res = TimePcaForSeq( M, nr, nc)
%function Res = TimePcaForSeq( M, nr, nc)
%преобразование 2 мерной последовательности [nt, nr*nc]
%в последовательность [nr, nc, nt]
nt = size( M, 1);
M = M';
Res = reshape( M, nr, nc, nt);
На Рис. 3.17. приведены результаты применения метода анализа
главных компонент к тестовой последовательности. Как можно видеть, в
ряде случаев метод анализа главных компонент обеспечивает улучшение
отношения сигнал/шум по сравнению с исходными термограммами.