code: def rtf_evd(psd_s: Tensor) -> Tensor:
      r"""Estimate the relative transfer function (RTF) or the steering vector by eigenvalue decomposition.
  
      .. devices:: CPU CUDA
  
      .. properties:: TorchScript
  
      Args:
          psd_s (Tensor): The complex-valued power spectral density (PSD) matrix of target speech.
              Tensor of dimension `(..., freq, channel, channel)`
  
      Returns:
          Tensor: The estimated complex-valued RTF of target speech.
          Tensor of dimension `(..., freq, channel)`
      """
      if not psd_s.is_complex():
          raise TypeError(
              f"The type of psd_s must be ``torch.cfloat`` or ``torch.cdouble``. Found {psd_s.dtype}."
          )
      if psd_s.shape[-1] != psd_s.shape[-2]:
          raise ValueError(
              f"The last two dimensions of psd_s should be the same. Found {psd_s.shape}."
          )
      _, v = torch.linalg.eigh(
          psd_s
      )  # v is sorted along with eigenvalues in ascending order
      rtf = v[..., -1]  # choose the eigenvector with max eigenvalue
      return rtf
  
imports: import math
  import tempfile
  import warnings
  from collections.abc import Sequence
  from typing import List, Optional, Tuple, Union
  import torch
  import torchaudio
  from torch import Tensor
  from torchaudio._internal.module_utils import deprecated
  from .filtering import highpass_biquad, treble_biquad
label_desc: Use image node_id 44 for calling a global function with example usage: rtf_evd(psd_s) and returns: rtf