相关疑难解决方法(0)

Matlab:如何在2D矢量集上矢量化嵌套循环

我有以下形式的功能:

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

我正在使用matlab进行遥感过程,我想对LandSatTM图像进行分类.这张图片有7个波段,是2048*2048.所以我将它们存储在3个2068*2048*7矩阵中.这个函数意味着是7*1使用名为ExtractStatisticalParameters和VarianceCovarianceMatrix的函数中的类的样本先前计算的矩阵是一个7*7矩阵,实际上你看到:

ellipsoid = (pixel-means)'*(VarianceCovarianceMatrix^(-1))*(pixel-means);  
Run Code Online (Sandbox Code Playgroud)

是一个椭圆体的方程式.我的问题是,每次你可以传递一个像素(它是一个7*1向量,其中每一行是一个分离的带中的像素的值)到这个函数,所以我需要写一个循环像这样:

for k1=1:2048  
   for k2=1:2048  
      pixel(:,1)=image(k1,k2,:); 
      Out = DecideIfAPixelIsWithinAnEllipsoidalClass(pixel,means,VarianceCovarianceMatrix);  
   end  
end  
Run Code Online (Sandbox Code Playgroud)

而且你知道系统需要很多时间和精力.你能建议我减少系统压力吗?

performance matlab image-processing vectorization

2
推荐指数
1
解决办法
539
查看次数