import torch


def approximate_wave_numbers(size_h: int, size_w: int) -> torch.Tensor:
    """
    Args
    - size_h: hight of tensor.
    - size_w: width of tensor.
    Returns
    - grid_wave_num: tensor of approximated wave numbers.
    """
    h = torch.tensor([i for i in range(size_h)])
    w = torch.tensor([i for i in range(size_w)])
    grid_h, grid_w = torch.meshgrid(h, w)

    grid_w = grid_w - ((size_w - 1) / 2.0)  # [h, w]
    grid_h = grid_h - ((size_h - 1) / 2.0)  # [h, w]

    grid_hw = torch.stack([grid_h, grid_w])  # [2, h, w]
    grid_wave_num = grid_hw.norm(dim=0)  # [h, w]
    grid_wave_num = grid_wave_num - grid_wave_num.min()

    return grid_wave_num