You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MATLAB的meshgrid中生成填充式同心圆并赋值0/1?

实现MATLAB填充式同心圆的方法

没问题,我来帮你搞定这个需求!你之前的代码只能画出边框,是因为只生成了圆上的离散点;要做填充式的同心圆,核心思路是用网格坐标判断每个点到圆心的距离,给符合条件的区域批量赋值1或0,具体步骤和代码如下:

1. 生成覆盖区域的网格坐标

首先用meshgrid创建目标区域的网格,网格点数越多,圆的边缘越平滑:

% 定义坐标范围(这里取-5到5,你可以根据需求调整),生成1000x1000的高分辨率网格
x = linspace(-5, 5, 1000);
y = linspace(-5, 5, 1000);
[X, Y] = meshgrid(x, y);

2. 计算每个点到圆心的距离

默认以原点(0,0)为圆心,计算网格中每个点到圆心的欧氏距离:

distance = sqrt(X.^2 + Y.^2);

如果你的圆心不在原点,比如想放在(2,-1),只需要修改距离计算式:

center_x = 2;
center_y = -1;
distance = sqrt((X - center_x).^2 + (Y - center_y).^2);

3. 给填充区域赋值1/0

初始化一个全0的矩阵(对应黑色背景),然后用逻辑索引给符合距离条件的区域赋值1(对应白色填充):

% 初始化结果矩阵为全0
filled_img = zeros(size(X));

% 示例:生成3个填充区域——实心小圆+两个同心圆环
filled_img(distance <= 1) = 1;          % 半径≤1的实心圆
filled_img(distance >= 2 & distance <= 3) = 1;  % 半径2~3的圆环
filled_img(distance >= 4 & distance <= 5) = 1;  % 半径4~5的圆环

如果想要黑色填充、白色背景,只需要把初始化改成filled_img = ones(size(X));,然后给非填充区域赋值0即可。

4. 可视化填充结果

用imagesc显示矩阵,配合colormap(gray)实现黑白效果,记得加上axis equal避免圆被拉伸变形:

imagesc(filled_img);
colormap(gray);  % 设置黑白配色
axis equal;      % 保持纵横比,防止圆变椭圆
axis off;        % 关闭坐标轴,只显示图形
title('填充式同心圆');

额外小提示

  • 调整linspace的第三个参数可以改变网格分辨率:数值越大,圆的边缘越细腻,但计算量也会略有增加。
  • 可以通过修改距离条件,生成任意数量、任意半径组合的同心圆环或实心圆。

内容的提问来源于stack exchange,提问作者Viron Gil A. Estrada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:08:47