1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
clc %sterg ecranul consolei
clear all; %sterg toate variabilele pt.a nu exista confuzii
close all; %inchid toate figurile deschise cu grafice sau imagini pt.a nu exista confuzii la imagini
%M =[1 2 3; 2 7 5; 3 5 8]; %definirea matricei M
M= imread('55.jpg'); %citesc matricea 100*100 asociata imaginii rgb
%%disp(I);
%M=rgb2gray(I);imshow(M);
M=double(M); %conversie in double a matricii double array help-ul functiei cov permite doar folosirea variabilelor double
S=cov(M); %calcul matrice covarianta S pt.matricea initiala M
disp(S);
V = M(1:100*100) %matricea N*N unde N=100 o transform in vector N*N*1
disp('Valorea medie pentru vectorul V');
mean(V) %calcul valoare medie pt.vectorul de forma N*N*1
disp('Matricea de covarianta asociata matricii M:');
T=abs(inv(S));
disp('Inversa matricii de covarianta S');
disp(T);
% Implementarea formulei Mahalanobis pt. matricea initiala data M
x=V'; %parametru formula Mahalanobis
disp('Vectorul transpus este');
disp(x);
miu=mean(V'); %parametru formula Mahalanobis
disp('Calculul valorii medii pentru vectorul V transpus')
disp(miu);
%Formula pentru calculul distantei Mahalanobis -aici e problema
%Transformam matricea T(3*3) intr-un vector V1 3*3*1
V1=T(1:100*100);
disp('Transformarea inversei matricii de covarianta in vector');
disp(V1);
distmaha=sqrt((x-miu)'*V1'*(x-miu));
disp('Distanta Mahalanobis pentru matricea initiala este');
disp(distmaha);
index = find( distmaha == real(distmaha) );
dataOut = distmaha( index);
disp(dataOut);
y=mean(distmaha);
disp(y);
result=real(y);
disp(result); |
Partager