Matlab: Jak wektoryzować zagnieżdżoną pętlę nad zestawem wektorów 2D

Mam funkcję w następującej formie:

function Out = DecideIfAPixelIsWithinAnEllipsoidalClass(pixel,means,VarianceCovarianceMatrix)  
   ellipsoid = (pixel-means)'*(VarianceCovarianceMatrix^(-1))*(pixel-means);  
   if ellipsoid <= 1
      Out = 1;
   else
      Out = 0;
   end
end  

Robię procesy teledetekcji za pomocą matlab i chcę sklasyfikować obrazy LandSatTM. Ten obraz ma 7 pasm i wynosi 2048 * 2048. Tak więc zapisałem je w macierzy 3-wymiarowej 2048 * 2048 * 7. Ta funkcja oznacza 7 * 1 macierz obliczona wcześniej przy użyciu próbki klasy w funkcji o nazwie ExtractStatisticalParameters i VarianceCovarianceMatrix jest macierzą 7 * 7, w rzeczywistości widać, że:

ellipsoid = (pixel-means)'*(VarianceCovarianceMatrix^(-1))*(pixel-means);  

jest równaniem elipsoidy.Mój problem polega na tym, że za każdym razem możesz przekazać pojedynczy piksel (jest to wektor 7 * 1, gdzie każdy rząd jest wartością piksela w oddzielnym paśmie) do tej funkcji, więc muszę napisać pętla w ten sposób:

for k1=1:2048  
   for k2=1:2048  
      pixel(:,1)=image(k1,k2,:); 
      Out = DecideIfAPixelIsWithinAnEllipsoidalClass(pixel,means,VarianceCovarianceMatrix);  
   end  
end  

i wiesz, że zajmie to dużo czasu i energii systemu. Czy możesz zaproponować mi sposób na zmniejszenie nacisku na system?

questionAnswers(1)

yourAnswerToTheQuestion