前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在matlab矩阵中随机生成圆【含源代码】

如何在matlab矩阵中随机生成圆【含源代码】

作者头像
巴山学长
发布于 2021-03-30 03:39:16
发布于 2021-03-30 03:39:16
2.2K00
代码可运行
举报
文章被收录于专栏:巴山学长巴山学长
运行总次数:0
代码可运行

言归正传,巴山在浏览知乎时邀请我回答上图所示的问题,所幸就点进去看了一眼,并给了解题思路。

该问题所涉及的知点并不多也不难,主要就是如何生成圆以及矩阵赋值操作。因为矩阵是离散数据集,因此对矩阵的大小要有一定的限制,比如在一个2✖2或5✖5的矩阵中生成随机圆显然是没有意义的。

巴山将按以下步骤来解决该问题:

首先,初始化一定大小元素值全为false的逻辑矩阵JZ,并定义一个取值为0到2π的角theta,定义角是因为圆的参数方程要用到。

其次,随机生成圆心和半径,当然都得在矩阵大小范围内,特别提醒,这里的圆心只能取整数值,因为矩阵索引值不能为小数。

最后,根据半径和圆心生成圆的位置坐标并取整,剔除超过矩阵大小范围的位置,将矩阵中对应位置设置为true即可

以下是main函数及子函数randCircle:

main函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
% 作者:巴山
% 欢迎关注matlab爱好者公众号

clc;clear;
M = 500;

figure;
JZ  = randCircle(M);
himg = imshow(JZ);
% 更新圆
hold on;
for k = 1:20
    [~,L] = randCircle(M);
    JZ(sub2ind(size(JZ),L(:,2),L(:,1))) = true;
    set(himg,'CData',JZ);
    pause(0.2);
end
hold off;

子函数randCircle:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function [JZ,L] = randCircle(M)

JZ    = false(M,M); 

% 定义圆周角
theta = linspace(0,2*pi,round(M*2));

% 定义随机函数
rfun = @(a,b) a+(b-a)*rand;

% 随机圆心和半径
C    = round([rfun(1,M-1),rfun(1,M-1)]);
R    = rfun(5,M*0.15);

% 生成圆
x    = round(C(2) + R*cos(theta))';
y    = round(C(1) + R*sin(theta))';

% 剔除位置小于0的点
loc  = find((x>0) & (y>0));

[m,n] = size(JZ);
nx   =  x(loc)-n;
ny   =  y(loc)-m;
% 剔除位置超出范围的点
nloc  = find((nx<0) & (ny<0));

% 组合坐标
L  = [ny(nloc)+m, nx(nloc)+n];
L  = unique(L,'rows');
% 将符合条件的位置赋值为true
JZ(sub2ind(size(JZ),L(:,2),L(:,1))) = true;

效果图

最后,感谢您的阅读!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【机器视觉与图像处理】基于MATLAB+Hough的圆检测
本次文章,没有太多好写的,就是最近做的一个机器视觉的课程设计作业,是要做一个流水线的生产线建模以及对于产品的检测识别,我个人承包了圆心半径检测的内容,熬了好几天,终于找到了一个好的算法可以比较迅速准确的找到圆了。天不负我!!
用户1687088
2018/07/24
2.8K0
【机器视觉与图像处理】基于MATLAB+Hough的圆检测
NSGA2 算法MATLAB完整代码 中文注释详解
https://download.csdn.net/download/joekepler/10590751
全栈程序员站长
2022/08/26
1.1K0
NSGA2 算法MATLAB完整代码 中文注释详解
科研绘图之用matlab实现离散圆状态图绘制
小编之前在浏览美国总统选举开票过程中在Foxnews中看见上面的实时开票状态图,也不知该图的学名叫什么,姑且就叫离散圆状态图。离散圆状态图可以展示4个维度的信息 —— 州名、票数、领先状态以及最终状态,是一种非常不错的多维度数据展示方法。
巴山学长
2021/01/14
7760
科研绘图之用matlab实现离散圆状态图绘制
列文伯格算法_最短路径matlab程序
  本篇文章到这里就结束了,欢迎大家继续阅读本系列文章的后续文章,本文介绍的内容的完整代码的MATLAB文件我会放到附件里,听说在上传的时候设为粉丝可下载是不需要花费积分的,大家看一下需不需要积分,若还是需要积分,在评论区留言,我直接传给你
全栈程序员站长
2022/11/08
9000
列文伯格算法_最短路径matlab程序
我用MATLAB撸了一个2D LiDAR SLAM
将提供的2DLiDAR数据集’b0-2014-07-11-10-58-16.bag’,转为matlab的.mat数据文件,这其中包括有5522批次扫描数据,每次扫描得到1079个强度点。如下:
用户1150922
2019/05/27
1.9K1
Matlab入门(一)
功能区:提供三个选项卡(主页,绘图,应用程序),各自有不同的工具可供使用;快速访问工具栏:包含一些常用按钮;当前文件夹工具栏:用于实现当前文件夹的操作。一定要先建立文件再将其设为工作文件夹。
十二惊惶
2024/02/28
2920
Matlab入门(一)
人工智能算法:基于Matlab遗传算法的实现示例
作为一种进化算法,遗传算法(GA, Genetic Algorithm)的基本原理是将问题参数编码为染色体,进而利用优化迭代的方法进行选择、交叉和变异算子操作来交换种群中染色体的信息,最终生成符合优化目标的染色体。
用户1143655
2023/02/23
4K0
人工智能算法:基于Matlab遗传算法的实现示例
卡尔曼滤波应用及其matlab实现
房间温度在25摄氏度左右,测量误差为正负0.5摄氏度,方差0.25,R=0.25。Q=0.01,A=1,T=1,H=1。
全栈程序员站长
2022/09/07
1.2K0
卡尔曼滤波应用及其matlab实现
Matlab画图-非常具体,非常全面
强大的画图功能是Matlab的特点之中的一个,Matlab提供了一系列的画图函数,用户不须要过多的考虑画图的细节,仅仅须要给出一些基本參数就能得到所需图形,这类函数称为高层画图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层画图操作。这类操作将图形的每一个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每一个对象分配一个句柄,能够通过句柄对该图形元素进行操作,而不影响其它部分。
全栈程序员站长
2021/11/18
2.1K0
MFCC算法讲解及实现(matlab)[通俗易懂]
这里该包的安装我直接附上我们师姐写过的一篇文章,里边的介绍很详细: 戳这里!!!跳转到文章链接地址
全栈程序员站长
2022/06/25
2.8K0
MFCC算法讲解及实现(matlab)[通俗易懂]
Deeplearning.ai 课程笔记第一部分:神经网络与深度学习
神经网络就是由若干神经元组合而成的网络结构,其包含输入层、隐藏层和输出层。而含有多层隐藏层的神经网络即为深度神经网络。下图给出了一个深度神经网络的示意图。
口仆
2020/08/17
8950
OFDM——PAPR减小
本文对减小 OFDM 峰值平均功率比(PAPR—Peak to Average Power Ratio)的内容以思维导图的形式呈现,有关仿真部分进行了讲解实现。
Gnep@97
2023/12/29
6230
MATLAB数据类型和运算符+矩阵创建
MATLAB有些固定的变量,称为特殊常量。这些特殊常量具有特定的意义,用户在定义变量名时应避免使用。
CSDN-Z
2024/10/17
1470
MATLAB数据类型和运算符+矩阵创建
【机器学习 | 数据挖掘】智能推荐算法
智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘,以提取有价值的信息和洞察。它结合了大数据技术、人工智能(AI)、机器学习(ML)和数据挖掘等多种方法,旨在通过自动化的方式分析复杂数据集,发现潜在的价值和关联性,实现数据的自动化处理和分析,从而支持决策和优化业务流程。与传统的人工分析相比,智能大数据分析具有自动化、深度挖掘、实时性和可视化等特点。智能大数据分析广泛应用于各个领域,包括金融服务、医疗健康、零售、市场营销等,帮助企业做出更为精准的决策,提升竞争力。 【GitCode】专栏资源保存在我的GitCode仓库:https://gitcode.com/Morse_Chen/Intelligent_bigdata_analysis。
Francek Chen
2025/01/22
1640
【机器学习 | 数据挖掘】智能推荐算法
Matlab绘图方法整理(超完整版)
二维图像是我们在学习过程中经常会接触到的图像,比如在做数学题目时随手画出的一个正弦曲线,这个图像往往是我们根据它的函数做出来的,事实确是这样,在我们学习过程中画出来的每一个图像几乎都是函数,反过来说,每一个函数都对应着它自己的图像,我们能画出来的二维图像往往是一个一元函数即二元方程,在Matlab中做二维图像也是这样,我们根据一个函数来画出它的图像,不过要注意的一点是,在Matlab画图的过程中,它并不认识你给出的那个函数,它要做的仅仅是把你给出的函数上的点连成线而已。
全栈程序员站长
2022/09/07
2.5K0
Matlab绘图方法整理(超完整版)
OpenCV 系列教程5 | OpenCV 图像处理(中)
霍夫变换是一种特征提取技术,主要应用于检测图像中的直线或者圆。 OpenCV 中分为霍夫线变换和霍夫圆变换。
机器视觉CV
2019/11/12
1.7K0
OpenCV 系列教程5 | OpenCV 图像处理(中)
Matlab绘图(一二三维)
强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。
全栈程序员站长
2022/07/15
2.3K0
这40个Python可视化图表案例,强烈建议收藏!
不过有些小伙伴也会遇到不少问题,比如选择何种图表,以及如何制作,代码如何编写,这些都是问题!
小F
2021/09/14
4.4K0
如何在matlab编程中逢山开路、遇水搭桥?
相信小伙伴们在matlab编程中肯定最不愿意遇见的就是“Error”了吧,前几天帮忙一位小伙伴写代码,其中需要使用到一个圆形区域去逐行扫描矩阵,以确定每个矩阵元周围元素的分布情况。
巴山学长
2020/02/17
1K0
如何在matlab编程中逢山开路、遇水搭桥?
机器视觉算法(第10期)----图像处理中64个常用的算子
上期我们一起学习了OpenCV中最重要的数据类型数组Mat类, 机器视觉算法(第9期)----OpenCV中最最最重要的类型 从今天我们仍将以OpenCV为工具,来介绍图像处理中常用到的算子都有哪些?
智能算法
2019/06/20
3K0
相关推荐
【机器视觉与图像处理】基于MATLAB+Hough的圆检测
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验