Matlab统计棋盘连通分量(空值区域)的大小和个数

news2024/11/20 9:40:54

一、基础设定

在20x20的棋盘矩阵中,设定黑子为1,空值为0

现需要统计空值(连通分量)的大小和个数并标记,如下图所示:

以此类推

其中,最大的连通分量如下:

二、Matlab程序

以下是红色标记连通分量大小为6的Matlab程序

clear,clc,close all
m = 20;
n = 20;
markersize = floor(80-(max([m n])));
rng('default');
A = randn(m,n);
A(abs(A)<=1) = 1;
A(abs(A)>1) = 0;
Ar = 1-A;
cc4 = bwconncomp(Ar,4);
L4 = labelmatrix(cc4);

counts = [];
for i = 1:numel(cc4.PixelIdxList)
    idx = cc4.PixelIdxList{1,i};
    Ar(idx) = numel(cc4.PixelIdxList{1,i});
    counts(i) = numel(cc4.PixelIdxList{1,i});
end
size=flip(unique(counts));

fprintf('编号\t\t连通分量大小\t\t个数\n');
for i = 1:numel(size)
    fprintf('%d\t\t\t%d\t\t\t%d\n',i,size(i),sum(counts==size(i)));
end
fprintf('连通分量总个数:%d\n',cc4.NumObjects);

mark = 6; % 需要标记的连通分量大小
Ar(Ar~=mark)=0;
fprintf('原始棋盘矩阵:\n');
disp(A); % 黑子为1,空值为0
fprintf('红色标记的棋盘矩阵:\n');
disp(Ar); % 红子为1,其余为0
go(A,markersize,m,n,[],[],[])
go(A,markersize,m,n,Ar,mark,sum(counts==mark))

function go(A,markersize,m,n,Ar,mark,count)
    figure('color',[1 1 1],'position',[600,100,400*1.5,400*1.5]);
    hold on
    spy(A,'k',markersize);
    spy(Ar,'r',markersize);
    axis([1 n 1 m]);
    xticks([1:n]);
    yticks([1:m]);
    xlabel("红色标记的连通分量大小为:"+mark+",个数为:"+count);
    ax = gca;
    ax.GridColor = [0 .5 .5];
    ax.GridLineStyle = '-';
    ax.GridAlpha = 0.5;
    ax.Layer = 'top';
    ax.XRuler.TickLabelGapOffset = 20;
    ax.YRuler.TickLabelGapOffset = 20;
    ax.YAxis.Label.Visible = 'off';
    grid on
end

三、输出结果

编号		连通分量大小		个数
1			10			1
2			8			1
3			7			2
4			6			4
5			5			2
6			4			2
7			3			3
8			2			12
9			1			22
连通分量总个数:49
原始棋盘矩阵:
     1     1     1     0     0     1     0     1     1     0     1     0     0     0     1     1     0     0     1     0
     0     0     1     1     1     1     1     1     1     1     0     0     1     0     1     1     1     1     1     1
     0     1     1     1     1     1     0     0     0     1     1     0     1     1     1     1     1     1     0     1
     1     0     1     0     0     1     0     1     0     1     1     1     1     1     0     1     1     1     1     1
     1     1     1     0     1     1     1     1     0     1     1     0     1     1     1     1     1     1     1     0
     0     0     1     1     1     1     1     1     1     0     1     1     0     0     1     1     1     0     1     0
     1     1     1     0     1     1     0     0     0     0     1     1     1     1     1     1     1     1     1     1
     1     1     1     1     1     1     1     1     1     0     1     1     0     0     1     1     1     1     0     1
     0     1     0     0     1     0     1     0     1     1     1     1     1     1     0     1     0     1     1     1
     0     1     0     0     0     1     0     1     1     1     1     1     1     1     0     1     0     1     1     1
     0     1     1     1     0     0     1     1     0     1     1     1     1     1     1     1     1     1     0     1
     0     0     1     1     1     1     1     1     0     1     0     0     1     0     0     1     0     1     1     1
     1     0     0     1     1     0     0     1     0     1     1     1     1     0     0     1     1     1     1     1
     1     1     0     1     0     0     1     1     1     1     1     1     1     1     1     0     0     0     1     0
     1     0     1     1     1     1     1     0     1     1     1     1     1     1     1     0     1     0     1     1
     1     0     0     0     1     1     1     1     1     1     0     1     1     1     1     1     1     1     1     1
     1     1     1     0     1     0     0     1     1     0     1     1     0     0     0     0     0     1     1     0
     0     1     1     1     0     0     0     0     1     1     1     0     0     1     1     1     0     1     1     1
     0     0     1     1     1     1     1     1     1     1     0     1     0     1     0     1     0     1     0     1
     0     0     0     1     0     0     1     1     1     1     1     0     1     1     0     1     1     1     0     1

红色标记的棋盘矩阵:
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     6     6     6     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     6     0     6     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     6     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     6     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     6     6     6     6     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     6     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     6     6     0     0     0     0     0     0     0     0     0     0     0     0     0
     6     0     0     0     6     6     6     6     0     0     0     0     0     0     0     0     0     0     0     0
     6     6     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     6     6     6     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

读写锁ReentrantReadWriteLockStampLock详解

如何设计一把读写锁&#xff1f;ReentrantReadWriteLock 读写锁设计思路 读写状态的设计 设计的精髓&#xff1a;用一个变量如何维护多种状态 在 ReentrantLock 中&#xff0c;使用 Sync ( 实际是 AQS )的 int 类型的 state 来表示同步状态&#xff0c;表示锁被一个线程重复获…

【网络基础】——传输层

目录 前言 传输层 端口号 端口号范围划分 知名端口号 进程与端口号的关系 netstat UDP协议 UDP协议位置 UDP协议格式 UDP协议特点 面向数据报 UDP缓冲区 UDP的使用注意事项 基于UDP的应用层协议 TCP协议 TCP简介 TCP协议格式 确认应答机制&#…

性能测试需求分析

1、客户方提出 客户方能提出明确的性能需求&#xff0c;说明对方很重视性能测试&#xff0c;这样的企业一般是金融、电信、银行、医疗器械等&#xff1b;他们一般对系统的性能要求非常高&#xff0c;对性能也非常了解。提出需求也比较明确。 曾经有一个银行项目&#xff0c;已经…

漏洞复现--华测监测预警系统2.2任意文件读取

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

Asp.net core Web Api 配置swagger中文

启动项目&#xff0c;如图&#xff1a; 原来是英文的&#xff0c;我们要中文的&#xff0c;WeatherForecastController.cs是一个示例&#xff0c;删除即可&#xff0c;WeatherForecast.cs同时删除&#xff0c;当然不删除也行&#xff0c;这里是删除&#xff0c;创建自己的控制器…

CORE: Cooperative Reconstruction for Multi-Agent Perception 论文阅读

论文连接 CORE: Cooperative Reconstruction for Multi-Agent Perception 0. 摘要 本文提出了 CORE&#xff0c;一种概念简单、有效且通信高效的多智能体协作感知模型。 从合作重建的新颖角度解决了该任务&#xff1a; 合作主体共同提供对环境的更全面的观察整体观察可以作为…

Redis为什么这么快?高频面试题详解

Redis为什么这么快&#xff1f; Redis利用epoll来实现IO多路复用&#xff0c;将连接信息和事件放到队列中&#xff0c;一次放到文件事件分派器&#xff0c;事件分派器将事件分发给事件处理器。 Redis 是跑在单线程中的&#xff0c;所有的操作都是按照顺序线性执行的&#xf…

C进阶-动态内存管理

本章重点&#xff1a; 为什么存在动态内存分配&#xff1f; 动态内存函数的介绍 malloc free calloc realloc 常见的动态内存错误 经典的笔试题 柔性数组 1.为什么存在动态内存分配 开辟空间的方式有两个特点&#xff1a; 1. 空间开辟大小是固定的。 2. 数组在申明的…

Codeforces Round 846 (Div. 2) E. Josuke and Complete Graph 详解 数论分块

题目大意 题意来源 解题思路 首先我们假设存在 x x x满足 a , b ∈ [ l , r ] , g c d ( a , b ) x a,b\in[l,r],gcd(a,b)x a,b∈[l,r],gcd(a,b)x那么肯定 g c d ( ⌊ a / x ⌋ , ⌊ b / x ⌋ ) 1 就是互质 gcd(\lfloor a/x \rfloor, \lfloor b/x \rfloor)1就是互质 gcd(⌊a…

Js高级技巧—拖放

拖放基本功能实现 拖放是一种非常流行的用户界面模式。它的概念很简单&#xff1a;点击某个对象&#xff0c;并按住鼠标按钮不放&#xff0c;将 鼠标移动到另一个区域&#xff0c;然后释放鼠标按钮将对象“放”在这里。拖放功能也流行到了 Web 上&#xff0c;成为 了一些更传统…

如何制作电子画册更吸引读者?

电子画册是我们生活中最常见的书刊&#xff0c;无论是小公司还是大企业&#xff0c;都会制作一本属于自己的电子画册&#xff0c;可如何制作更加吸引读者的电子画册&#xff1f;这可难倒了好多人。 其实&#xff0c;制作一份好的电子画册需要一定的技巧和经验&#xff0c;比如…

【爬虫实战】python微博热搜榜Top50

一.最终效果 二.项目代码 2.1 新建项目 本文使用scrapy分布式、多线程爬虫框架编写的高性能爬虫&#xff0c;因此新建、运行scrapy项目3步骤&#xff1a; 1.新建项目: scrapy startproject weibo_hot 2.新建 spider: scrapy genspider hot_search "weibo.com" 3…

AI低代码维格云日历视图怎么用?

日历视图,是一个以天为单位,清晰展示当月所有日程的视图。在团队协作的过程中,我们常常会碰到以下场景: 制作项目日历,让团队成员知道每天需要完成什么任务; 制作排课表,给老师和教室安排课程; 制作会议日历,提醒团队成员进行每周计划与回顾; 制作营销日历,把握全年…

23面向对象案例1

目录 1、计算连续表达式的一个过程 2、优化后的代码 为什么不能return resultn&#xff1f; 3、用面向对象的方法可以解决冗余的问题&#xff0c;但是还是不能解决result的值可以被随意修改的问题 4、解决不能被随意修改的问题&#xff0c;可以将类属性改成私有变量吗&…

Marvin攻击25 年之久的RSA解密漏洞重现

1998 年发现的与 SSL 服务器中的 PKCS #1 v1.5 填充相关的缺陷&#xff08;据信已得到解决&#xff09;至今仍然影响着多个广泛使用的项目。 经过衡量端到端操作的广泛测试后&#xff0c;红帽研究人员发现了原始定时攻击的几种变体&#xff0c;统称为“马文攻击”&#xff0c;…

343. 整数拆分 96.不同的二叉搜索树

343. 整数拆分 设dp[i]表示拆分 数字i 出来的正整数相乘值最大的值 (i - j) * j,和dp[i - j] * j是获得dp[i]的两种乘法&#xff0c;在里面求最大值可以得到当前dp[i]的最大值&#xff0c;但是这一次的得出的最大值如果赋值给dp[i]&#xff0c;可能没有没赋值的dp[i]大&#…

springboot aop详解

springboot aop的实现方式有哪些 在 Spring Boot 中&#xff0c;AOP&#xff08;面向切面编程&#xff09;是通过 Spring Framework 提供的 AOP 模块来实现的。Spring AOP 提供了几种实现方式来应用切面编程&#xff0c;包括以下几种&#xff1a; 基于代理的 AOP&#xff1a; …

CSS变量 var()的用法

写在前面 这里介绍一下开发中常用的css变量var()&#xff0c;它可以实现样式的动态设置&#xff0c;使用方法主要分为全局使用和局部使用两种。 如何定义CSS变量var() 在CSS文件中&#xff0c;变量需要使用 – 作为前缀来定义&#xff0c;后面跟上变量名和值&#xff0c;如&a…

基于人工电场优化的BP神经网络(分类应用) - 附代码

基于人工电场优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于人工电场优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.人工电场优化BP神经网络3.1 BP神经网络参数设置3.2 人工电场算法应用 4.测试结果…

ARM +FPGA GPIB IP核实现

目前在数据发生其技术上居领先的是美国的 Tektronix 公司和 Agilent 公司。 Agilent 公司的台式脉冲 / 数据发生器家族的最高时钟频率达 3GHz &#xff08;定 时发生器&#xff09;&#xff0c;数据发生器 E81200 在通道数为 8CH 时数据速率为 660Mb/s, 即可以产…