我有以下形式的功能:
function Out = DecideIfAPixelIsWithinAnEllipsoidalClass(pixel,means,VarianceCovarianceMatrix)
ellipsoid = (pixel-means)'*(VarianceCovarianceMatrix^(-1))*(pixel-means);
if ellipsoid <= 1
Out = 1;
else
Out = 0;
end
end
我正在用 matlab 进行遥感处理,我想对 LandSatTM 图像进行分类。这张图片有 7 个波段,大小为 2048*2048。所以我将它们存储在 3 维 2048*2048*7 矩阵中。在此函数中表示为 7 *1 之前使用名为 ExtractStatisticalParameters 和 VarianceCovarianceMatrix 的函数中的类样本计算的矩阵是一个 7*7 矩阵,实际上您会看到:
ellipsoid = (pixel-means)'*(VarianceCovarianceMatrix^(-1))*(pixel-means);
是椭圆体的方程。我的问题是每次你可以将一个像素(它是一个 7*1 向量,其中每一行是分隔带中像素的值)传递给这个函数,所以我需要写一个像这样循环:
for k1=1:2048
for k2=1:2048
pixel(:,1)=image(k1,k2,:);
Out = DecideIfAPixelIsWithinAnEllipsoidalClass(pixel,means,VarianceCovarianceMatrix);
end
end
而且您知道这将花费系统的大量时间和精力。您能建议我一种减少施加在系统上的压力的方法吗?