当前位置:网站首页>指定区域内随机填充圆之matlab实现
指定区域内随机填充圆之matlab实现
2022-08-04 05:35:00 【懂科研的程序员】
之前有伙伴在QQ交流群里询问如何在matlab中编程实现上图所示,刨去图中所有修饰,这个听起来相对高级的颗粒堆叠非均相模型实则就是在矩形区域随机填充不同半径大小的圆。再更进一步抽象此问题,就是如何在matlab中绘制圆。那么问题来了,如何唯一表征一个圆呢?
圆的特征要素即圆心与半径,只要知道这两要素即可表征圆,那怎么在matlab中画圆呢?在matlab画圆的方法多种多样,如函数plot、line、rectangle、patch与fill等都可以用于绘制圆。
% 用line函数绘制圆示例
t = linspace(0,2*pi,200);
xc = 0.5;
yc = 0.5;
r = 1.5;
x = xc+r*cos(t);
y = yc+r*sin(t);
line(x,y);
现在已经知道如何画圆了,但图中圆的圆心位置与半径都是各不相同的,为了达到这一效果,matlab中的伪随机数生成器rand函数就可以上场了。通过对rand函数稍加改造,不仅可以随机生成圆的位置,还可以随机设置圆的半径。实现原理非常简单,这里就不再赘诉。小编经过琢磨,将相关功能集成到了名为randCircle的函数中,randCircle函数具有如下功能:
(1) 设定是否允许填充圆相交、相切或独立存在
(2) 指定区域内圆的生成个数
(3) 设定是否允许圆在边界处穿过边界
(4) 指定圆的填充颜色或随机设定
(5) 指定圆的边框粗细 (可支持无边框)
(6) 指定圆面透明度或随机设定
(7) 支持将生成的图像保存为不同格式的高清图像
除了在功能方面表现,randCircle函数的编写上也下足功夫,如默认输入参数设置、输入参数有效性验证、检查是否包含无法识别的参数等matlab函数编写等基本功也是应有尽有,本程序可以为编写其他matlab函数作为参考模版用。本程序执行效率高,在指定区域生成2000个圆,小编的测试结果显示仅需3秒左右。当然,若要保存图片,运行时间会有增加。
主函数:main.m
tic;
clc;clear;close all;
% 宽高
C.wh = [80, 60];
% 半径范围
C.rlim = [0.5, 1.5];
% 定义区域内圆个数
C.num = 2000;
% 最大尝试次数
% C.N = 100;
% 是否随机填充圆面颜色
C.colormType = false;
% 圆面边框粗细
C.linewidth = 0.75;
% 圆面透明度
C.alpha = 1;
% 是否允许圆穿过边界
C.edgeType = true;
% 是否允许重叠
C.overlap = false;
% 是否允许相切
C.tangent = true;
% 是否保存图像
C.isprint = false;
% 图像名称
C.imgname = strcat('matlab爱好者9527');
% 图像格式
C.imgType = '-dpng';
% 图像分辨率
C.imgdpi = 300;
[rinfo,C] = randCircle(C);
toc;
以下给出两组效果图:
(随机填充颜色且不允许圆穿过边界)
(指定填充颜色且允许圆穿过边界)
当然此功能相对初级,小伙们可根据此版本作为母版进行后续升级,包括可指定任意区域形状、可填充除圆以外的其他图形、指定特定分布的填充(如生成半径正态分布的填充图形等)、三维空间中的随机填充等等。
需要源代码请关注懂科学的程序员公众号,谢谢!
特别说明:若您在学术活动中使用到本文的工作,请注明来源于懂科学的程序员,不胜感激。
边栏推荐
- 把DocumentsandSettings迁移到别的盘
- 天鹰优化的半监督拉普拉斯深度核极限学习机用于分类
- Software: Recommend a domestic and very easy-to-use efficiency software uTools to everyone
- 格拉姆角场GAF将时序数据转换为图像并应用于故障诊断
- Memory limit should be smaller than already set memoryswap limit, update the memoryswap at the same
- E-R图总结规范
- MAML原理讲解和代码实现
- 数据库:整理四个实用的SQLServer脚本函数
- 微软电脑管家2.0公测版体验
- 狗都能看懂的变化检测网络Siam-NestedUNet讲解——解决工业检测的痛点
猜你喜欢
MAML原理讲解和代码实现
如何画好业务架构图。
Computer knowledge: desktop computers should choose the brand and assembly, worthy of collection
用手机也能轻松玩转MATLAB编程
VMD combined with ISSA to optimize LSSVM power prediction
解决腾讯云DescribeInstances api查询20条记录以上的问题
狗都能看懂的Pytorch MAML代码详解
Gramm Angle field GAF time-series data into the image and applied to the fault diagnosis
Software: Recommend a domestic and very easy-to-use efficiency software uTools to everyone
数据库技巧:整理SQLServer非常实用的脚本
随机推荐
Uos统信系统控制台欢迎登陆后消息及所处区域配置
DOM的12中节点类型,通过关系或方法获取DOM节点,渲染到浏览器页面的一些特效功能,获取DOM节点来改变属性,点击图片,切换为所点击的图片为背景图,页面上的表单验证,点击底部导航栏切换界面
Computer software: recommend a disk space analysis tool - WizTree
Visualization and Animation Technology (Computer Animation)
DenseNet详解及Keras复现代码
this关键字,构造函数
【C# - 方法封装】数据转换
Network skills: teach you to install batteries on the router, you can still surf the Internet when the power is cut off!
基于时序模式注意力机制(TPA)的长短时记忆(LSTM)网络TPA-LSTM的多变量输入风电功率预测
2DCNN, 1DCNN, BP, SVM fault diagnosis and result visualization of matlab
matlab的2DCNN、1DCNN、BP、SVM故障诊断与结果可视化
事件链原理,事件代理,页面的渲染流程,防抖和节流,懒加载和预加载
基于爬行动物搜索RSA优化LSTM的时间序列预测
Uos统信系统 Postfix-smtps & Dovecot-imaps
Implementation of ICEEMDAN Decomposition Code in MATLAB
Uos统信系统 DISK(RAID+LVM)
原型图总结规范
SegNet——论文笔记
天鹰优化的半监督拉普拉斯深度核极限学习机用于分类
对象的扩展补充