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

MATLAB中如何在逻辑方阵内生成二维三角形衍射光阑?

如何在逻辑方阵中创建三角形光阑

核心思路是:给逻辑方阵的每个位置(i,j)(行索引i,列索引j)设定规则——判断该位置是否属于三角形区域,是则设为1(通光),否则设为0(遮挡)。以下是几种常见三角形光阑的实现方案(以Python+NumPy为例,也可以用纯循环实现):

1. 顶点在上的等腰三角形(底边在方阵中部)

三角形三个顶点为(0, mid)、(mid, 0)、(mid, size-1),其中mid是方阵边长的中点索引(假设边长为奇数)。

import numpy as np

def create_top_isosceles_triangle(size):
    # 初始化全0逻辑方阵
    grid = np.zeros((size, size), dtype=int)
    mid = (size - 1) // 2
    # 遍历三角形覆盖的行(从顶行到中间行)
    for i in range(mid + 1):
        # 计算当前行的通光区域左右边界
        left_bound = mid - i
        right_bound = mid + i
        grid[i, left_bound:right_bound+1] = 1
    return grid

# 测试5×5的三角形
triangle = create_top_isosceles_triangle(5)
print(triangle)

输出结果:

[[0 0 1 0 0]
 [0 1 1 1 0]
 [1 1 1 1 1]
 [0 0 0 0 0]
 [0 0 0 0 0]]

2. 底边在上的等腰三角形(顶点在方阵底部)

三个顶点为(0, 0)、(0, size-1)、(size-1, mid),覆盖方阵下半部分:

def create_bottom_isosceles_triangle(size):
    grid = np.zeros((size, size), dtype=int)
    mid = (size - 1) // 2
    # 遍历从中间行到底行
    for i in range(mid, size):
        offset = i - mid
        left_bound = mid - offset
        right_bound = mid + offset
        grid[i, left_bound:right_bound+1] = 1
    return grid

# 测试5×5的三角形
triangle = create_bottom_isosceles_triangle(5)
print(triangle)

输出结果:

[[0 0 0 0 0]
 [0 0 0 0 0]
 [1 1 1 1 1]
 [0 1 1 1 0]
 [0 0 1 0 0]]

3. 直角三角形(顶点在左上角,直角边沿行列)

规则:对于位置(i,j),当j <= i时设为1,覆盖方阵左下三角区域:

def create_right_angle_triangle(size):
    grid = np.zeros((size, size), dtype=int)
    for i in range(size):
        grid[i, :i+1] = 1  # 每行前i+1个位置设为1
    return grid

# 测试5×5的直角三角形
triangle = create_right_angle_triangle(5)
print(triangle)

输出结果:

[[1 0 0 0 0]
 [1 1 0 0 0]
 [1 1 1 0 0]
 [1 1 1 1 0]
 [1 1 1 1 1]]

自定义任意三角形

如果需要非对称或特定顶点的三角形,可以通过直线方程判断位置是否在三角形内:

  1. 确定三角形三个顶点的坐标(x1,y1)、(x2,y2)、(x3,y3)
  2. 写出三条边的直线方程,判断点(i,j)是否在三条边围成的区域内
  3. 遍历方阵所有位置,符合条件则设为1

内容的提问来源于stack exchange,提问作者requiemman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:07:39