由于在计算中,经常需要生成圆盘(or叫圆形?)掩膜,所以特意写了一个生成圆盘的matlab函数,当然经过修改,也可以生成圆环函数。

譬如,我们想在一个矩阵里提取以某一点为圆心,半径r内的元素,让这个圆范围外的元素都为0时,这就需要一个圆盘掩膜。但是按普通人的第一直觉都是利用对行和列的两重循环,把矩阵内的每一个元素都遍历一遍,看是否在圆内,如果在的话,赋值为1,不在的话,赋值为0 。对于这种传统做法,明显采用了两重循环,会大大降低matlab程序的效率,那有没有不用循环的方法呢?

下面就讲如何不用循环生成圆盘掩膜:

假设矩阵大小为512*512 ,取矩阵最中间一点为圆心,半径r=50。先用函数meshgrid生成矩阵对应的每一个坐标,然后用circle=x.^2+y.^2生成代表半径的平方的矩阵,最后用find函数找到符合要求的元素,赋值为1,不符合要求的赋值为0 。具体程序如下:

m=512; %矩阵的函数
n=512; %矩阵的列数
r=50;   %生成圆的半径
m1=-m/2:m/2-1;   %把圆心变到矩阵的中间
n1=-n/2:n/2-1;
[x,y]=meshgrid(m1,n1);
circle=x.^2+y.^2;   %计算出每一点到圆心的距离的平方circ_mask=zeros(m,n);
circ_mask(find(circle<=r*r))=1;  %找到圆内的元素,并复制为1
circ_mask(find(circle>r*r))=0;   %找到圆外的元素,并复制为0figure;
imshow(255*circ_mask);

程序运行结果如下:

另外,如果要生成圆环的话,只需要把find函数那里做相应的改变即可。

MATLAB中不用循环生成圆盘(圆形)/圆环掩膜矩阵相关推荐

  1. do matlab的 while循环_在MATLAB中,循环控制语句可以用for、while或do-while进行控制...

    在MATLAB中,循环控制语句可以用for.while或do-while进行控制 更多相关问题 [单选,A4型题,A3/A4型题] 28岁初产妇,孕32周,全身水肿及头痛就诊.查体:血压170/110 ...

  2. Matlab中for循环、while循环以及if判断语句如何使用

    1.Matlab中for循环语句如何使用 eg:求1²+2²+3² sum=0; for i=1:3sum=sum+i*i; end disp(sum) 2.Matlab中while循环语句如何使用 ...

  3. matlab里脚本循环语句,Matlab中while循环语句的用

    Matlab 中while循环语句的用法? matlab while循环的用法.while循环的使用与for循环是类似的.但是其中还是有不少的区别,例如对于循环次数而言,while循环的次数是不定的, ...

  4. 数学建模与MATLAB计算之007.MATLAB中的循环语句

    007.MATLAB中的循环语句 文章目录 007.MATLAB中的循环语句 一.for循环 (一)格式1: (二)格式2: 二.while循环 三.break语句和continue语句 四.循环的嵌 ...

  5. matlab 十六进制数组,【MATLAB】MATLAB中读取二进制数据文件并加入到矩阵中

    MATLAB中读取二进制数据文件并加入到矩阵中的应用如下: 如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof 这些函数非常熟悉了,在 ...

  6. Matlab中的循环

    如果学过C,Java等编程语言就非常容易理解. 1.for循环         和Python很类似,只是对于遍历元素的方式改了. for i = 初始值: 增值:终止数 执行语句 end 上述中,首 ...

  7. 在matlab中的循环语句,matlab中循环语句

    Matlab软件与基础数学实验 MATLAB编程介绍与循环结构 ★ MATLAB中各种命令可以完成许多单一的任务,对于某些较为复杂的问题,仅靠现有的命令或函数来解决,往 往是难以...... matl ...

  8. matlab中for循环设置二维数组,MATLAB中定义赋值一个二维数组

    MATLAB中定义赋值一个二维数组 答: 分号:; 因特网能提供的最基本服务 答:E-mail, WWW, FTP 劳动合同中,用人单位给予劳动者低于当地工资最低水平的违反了()合法原则 答:内容合法 ...

  9. matlab中xlsread循环,Matlab中xlsread 函数读取excel表格数据或者字符串

    先给出pailie3.xlsx部分数据 一.关于xlsread函数 fid = xlsread('pailie3.xlsx'); 第二列为字符串,读出来显示NaN (Not a Number,不是数字 ...

最新文章

  1. js获取当前系统时间
  2. sqlldr,将数据批量导入Oracle数据库
  3. html5字体颜色自动转换,【转】js里alert里的字体颜色怎么设置:字体颜色方法;fontcolor(color)...
  4. 【PC工具】200416最终百度网盘——最终下载方法及注意事项,代理是什么
  5. zabbix监控之二----Zabbix受控端及监控项
  6. Spring+SpringMVC +MyBatis整合配置文件案例66666
  7. Handling Errors Exceptionally Well in C++ 在C++中良好地捕获意外的错误
  8. windows下整合tomcat和nginx
  9. 书写README的各种markdown语法
  10. python get请求 url传参_requests的get请求url参数、url重定向处理及cookies
  11. 诺基亚X71上手评测:中端机市场中的绝对C位
  12. 使用Bus Hound抓USB转串口数据包,助力问题分析
  13. 特斯拉又起火燃烧,一人死亡!公司又处于负面新闻中,马斯克到底有多难?
  14. java类定义初成员变量赋值_Java中成员变量初始化
  15. RouterPassView——路由器密码查看工具
  16. 24张高清无码图,看到就停不下来了...
  17. 【华为路由器基本ACL过滤配置】
  18. 【判断蜂蜜真伪的简单方法】
  19. Vmware安装OpenWrt
  20. python爬取有道翻译

热门文章

  1. Elasticsearch实战——地理位置查询
  2. C++实现的利用LR(1)分析表对赋值表达式进行语法制导翻译生成四元式及汇编代码
  3. 错误处理机制perror的详解
  4. 请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某
  5. 基于bim技术的应用软件有哪些?提高bim工作效率的revit插件?
  6. python爬取qq电话_用Python爬取整个学院MM的电话和QQ,爬虫这也太霸道了!
  7. oracle修改表某列字段长度
  8. 利用手机工具教你快速完成英语翻译在线翻译中文
  9. Excel-旋风图制作
  10. MOOC《基础和声》笔记