作业帮 > 数学 > 作业

matlab用递归函数统计矩阵内斑块数

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:数学作业 时间:2024/04/30 13:36:57
matlab用递归函数统计矩阵内斑块数
目前,有一个30*30的矩阵,矩阵中的像素只有1~6的数字编码,随机的.现在要统计这个矩阵中的斑块数量.斑块是指连在一起的同一类型的像素.一个单独的像素(四邻域内没有相同元素)算作一个斑块;只按对角线连接的两个或多个像素不算一个斑块,按两个斑块或多个斑块统计,即多个像素组成一个斑块必须在一个像素的四邻域内要有相同元素.需要多追加财富值的可以满足.
老师给出了一个解决方案:首先统计第一行,从第二行开始使用递推函数逐个判断,从第二行开始,每个元素的斑块归属取决于它正上方的和下一个(右边)的元素的情况,而下一个元素的情况又取决于该元素上方的和又下一个元素的情况,如此递推
matlab用递归函数统计矩阵内斑块数
你这里的斑块其实就是连通域.MATLAb自带计算连通域个数的函数:bwlabel.
% 返回x中连通域个数
function n = f( x )
n = 0;
for i = unique(x)'
    [l c] = bwlabel(x==i, 4);
    n = n+c;
end
end