当前位置: 首页 > web >正文

基于MATLAB的二维圆形随机骨料生成程序

基于MATLAB的二维圆形随机骨料生成程序。这个程序利用随机数生成算法来创建随机分布的圆形骨料,同时确保骨料之间不重叠。你可以根据需要调整骨料的数量、大小范围和分布区域。

MATLAB程序代码

function generate_random_aggregates(numAggregates, minRadius, maxRadius, boxSize)% 参数说明:% numAggregates: 骨料的数量% minRadius: 骨料的最小半径% maxRadius: 骨料的最大半径% boxSize: 骨料分布的区域大小(正方形区域的边长)% 初始化骨料数组aggregates = [];% 循环生成骨料for i = 1:numAggregates% 生成随机半径radius = minRadius + (maxRadius - minRadius) * rand();% 生成随机中心位置while true% 随机生成骨料的中心位置centerX = radius + (boxSize - 2 * radius) * rand();centerY = radius + (boxSize - 2 * radius) * rand();% 检查是否与已有骨料重叠overlap = false;for j = 1:size(aggregates, 1)% 计算与已有骨料的距离distance = sqrt((centerX - aggregates(j, 1))^2 + (centerY - aggregates(j, 2))^2);% 如果距离小于两个骨料半径之和,则重叠if distance < radius + aggregates(j, 3)overlap = true;break;endend% 如果不重叠,则接受这个位置if ~overlapaggregates(i, :) = [centerX, centerY, radius];break;endendend% 绘制骨料分布figure;hold on;for i = 1:size(aggregates, 1)viscircles([aggregates(i, 1), aggregates(i, 2)], aggregates(i, 3), 'EdgeColor', 'b');endaxis equal;xlim([0 boxSize]);ylim([0 boxSize]);title('Random Aggregates Distribution');hold off;
end

程序说明

  1. 参数输入

    • numAggregates:骨料的数量。
    • minRadius:骨料的最小半径。
    • maxRadius:骨料的最大半径。
    • boxSize:骨料分布的区域大小(正方形区域的边长)。
  2. 随机骨料生成

    • 使用rand()函数生成随机半径和随机中心位置。
    • 检查新生成的骨料是否与已有骨料重叠。如果重叠,则重新生成中心位置,直到找到不重叠的位置。
  3. 绘制结果

    • 使用viscircles函数绘制圆形骨料。
    • 设置坐标轴范围以显示整个分布区域。

使用示例

在MATLAB命令窗口中调用该函数,例如生成20个骨料,最小半径为5,最大半径为15,分布区域大小为100:

generate_random_aggregates(20, 5, 15, 100);

运行程序后,你将看到一个图形窗口,显示随机分布的圆形骨料。

http://www.xdnf.cn/news/9644.html

相关文章:

  • APL Photonics封面成果:KAUST用五边形激光腔刷新物理随机数生成极限——800Gb/s!
  • Selenium 测试框架 - JavaScript
  • Xamarin入门笔记(Xamarin已经被MAUI取代)
  • 利益相关者意见分歧,如何决策
  • 在线临床指标分类信息表转甜甜圈矩阵图
  • 将git最后一次提交把涉及到的文件按原来目录结构提取出来
  • LLM中的Loss与Logits详解
  • 【leetcode】206. 反转链表
  • Linux Shellcode开发(Stager Reverse Shell)
  • 简述MySQL优化锁方面你有什么建议?
  • 彰显国产力量|暴雨亮相2025 C3安全峰会
  • Guava限频器RateLimiter的使用示例
  • STM32学习第一课--工程建立(云端备份与自我复盘)
  • ROS2学习(16)------ URDF 机器人建模方法
  • 操作系统 | 第一章:操作系统引论思维导图
  • 解决ssh: connect to host IP port 22: Connection timed out报错(scp传文件指定端口)
  • Java—多线程
  • 如何使用 poetry 创建虚拟环境,VSCode 如何激活使用 Poetry 虚拟环境(VSCode如何配置 Poetry 虚拟环境)
  • MVCC原理解析
  • js 手写promise
  • 专栏更新通知
  • Python 科学计算有哪些提高运算速度的技巧
  • 力扣——1.两数之和
  • 【论文阅读】User Diverse Preference Modeling by Multimodal Attentive Metric Learning
  • 【笔记】修改abu量化本地部署数据文件夹目录
  • OpenCV CUDA模块直方图计算------用于在 GPU 上执行对比度受限的自适应直方图均衡类cv::cuda::CLAHE
  • Python 的 `next()`函数
  • 数字化回归本质:第一性原理驱动的制造业转型与AI+云PLM系统实践
  • LeetCode-数组技巧题目
  • 影刀RPA-20-高级操作题2