我正在处理512x512像素的图像;我编写了一个代码来分析我的图像,并使用预分配,在10分钟内或多或少的矩阵中给出了我需要的维度值(512,512,400)。
我的问题是当我想使用这个矩阵时:我需要花费数小时才能看到结果,并且我希望在更短的时间内实现一些能够实现我想要的脚本。你能救我吗?
% meanm is a matrix (512,512,400) that contains the mean of every inputmatrix
% sigmam is a matrix (512,512,400) that contains the std of every inputmatrix
% Basically what I want is that for every inputmatrix (512x512), that is stored inside
% an array of dimensions (512,512,400),
% if a value is higher than the meanm + sigmam it has to be changed with
% the corrispondent value of meanm matrix.
p=400;
for h=1:p
if (inputmatrix(:,:,h) > meanm(:,:,h) + sigmam(:,:,h))
inputmatrix(:,:,h) = meanm(:,:,h);
end
end
我知道MatLab在矩阵计算方面表现更好,但我不知道如何在我的400张图像上更好地转换这个for循环。
答案 0 :(得分:0)
尝试使用for循环的条件来制作逻辑矩阵
logical_mask = (meanm + sigmam) < inputmatrix;
inputmatrix(logical_mask) = meanm(logical_mask);
这可以通过使用Matlab的两个功能来提高您的性能