指定区域内实现多尺度、多维度2D图形随机填充(如圆、椭圆、多边形)之MATLAB实现

N久之前,咱在公众号中分享了如何用MATLAB实现在指定区域内随机填充圆,并将相关功能封装一个名为randCircle函数里面,其可实现的功能如下:
(1) 设定是否允许填充圆相交、相切或独立存在
(2) 指定区域内圆的生成个数
(3) 设定是否允许圆在边界处穿过边界
(4) 指定圆的填充颜色或随机设定
(5) 指定圆的边框粗细 (可支持无边框)
(6) 指定圆面透明度或随机设定
(7) 支持将生成的图像保存为不同格式的高清图像

拿到源代码的伙伴应该会发现randCircle函数其实或多或少是有些问题的,比如,在处理穿过边界的圆时并不真实对越界部分进行切除而且通过坐标轴限制来移到相应的视区效果。再如,生成的图形会出现“串链”现象,如下图所示:
图1 randCircle函数生成的效果图,出现很多“串链”现象很显然这与实际的颗粒堆叠或者说分布是不太相符的,更为致命的是仅支持圆的随机填充,对其他更加复杂的几何图形却无能为力。因此,咱决定基于randCircle函数已有算法进行升级优化。

那升级之后有哪些新有亮点呢?下面将一一为大家解读。
亮点1:函数名称由randCircle更改为randFill以便更加符合实际的应用场景;
亮点2:除了可以填充圆外,还支持填充椭圆、多边形以及它们之间的任意组合,可以这么讲任何图形都可以使用randFill来做二维随机填充或堆叠;
亮点3:引入了周期性边界处理方法,能完成处理周期性边界问题;
亮点4:采用图形逻辑处理方法,完美实现边界处图形的裁切操作,所见即所得,而不是像randCircle函数那样通过限制坐标轴区域来实现;
亮点5:摒弃了randCirle中部分不适宜功能,杜绝发生“串链”现象;
亮点6:创建独立的多边形生成函数并将其参数化,原则上可以生成三边及以上边数的任意随机多边形,如边长随机、图形方位随机等;
亮点7:可多维度控制程序终止,如最大执行次数、颗粒数目、面积分数等等;
亮点8:继承了randCircle函数的所有优点并引入多可选设置项,如控制边界区域是否显示。
接下来就一起来看看使用randFill生成的效果图吧:
图2 随机填充圆图2 随机填充圆
图3 随机填充椭圆图3 随机填充椭圆
在这里插入图片描述图4 随机填多边形
在这里插入图片描述图5 随机填充圆与椭圆
在这里插入图片描述图6 随机填充圆与多边形
在这里插入图片描述图7 随机填充椭圆与多边形
在这里插入图片描述图8 随机填圆、椭圆与多边形
在这里插入图片描述图9 考虑周期性边界的混合填充

实现randFill的算法并不是什么难事,伙伴们稍加努力即可轻松开发出来。

下一版randfill功能预告:
① 支持指定特定分布的填充(如生成半径正态分布的填充图形等)
② 任意区域形状的支持

功能展望:在完美实现二维(2D)空间的所有相关功能后,randFill还将进军三维(3D)空间,实现诸如球体、椭球体、锥体、柱体与多面体等3D图形的随机填充,最终实现2D与3D建模与有限元计算模型联合起来,实现真正的应用。当然,应用场景不限于有限元模拟,其他场景的应用也会逐步开发。划重点:如果相关都得以实现,两三篇SCI都将不是问题。如果您在论文中用到本文的代码,望务必告知咱。

如需本文完整源代码,请关注巴山学长公Z号,回复"填充圆"获取。

感谢您的阅读,有缘再见!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多维度输入多维度输出的LSTM(长短期记忆)模型可以用于处理时间序列数据,并且能够接受多个特征作为输入,并输出多个特征。 在MATLAB中,我们可以使用深度学习工具箱来实现多维度输入多维度输出LSTM模型。以下是一个简单的实现示例: 首先,我们需要准备好训练数据。训练数据应该是一个三维矩阵,其中包含时间步、特征和样本的维度。对于LSTM模型,我们可以使用序列输入层来接受输入数据。 接下来,我们可以创建LSTM网络模型,并指定网络的层数、每个层的神经元数量以及激活函数。可以使用lstmLayer函数来创建每一层的LSTM层。 然后,我们需要定义网络的输出层。对于多维度输出,我们可以使用完全连接层来指定输出的维度,并使用softmax作为激活函数,以便输出概率值。 在训练之前,我们需要设置训练选项。我们可以指定训练的最大时期数、小批量大小以及优化器等。 接下来,我们可以使用trainNetwork函数来训练LSTM模型。将准备好的训练数据、网络模型和训练选项作为输入参数。 训练完成后,我们可以使用训练好的LSTM模型来进行预测。可以使用predict函数并提供新的输入数据,来获取模型的输出结果。 通过以上步骤,我们可以在MATLAB实现多维度输入多维度输出的LSTM模型。这种模型对于处理时间序列数据,并进行时序预测,具有很大的应用潜力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值