code: def create_dct(
      n_mfcc: int, n_mels: int, norm: Optional[str]
  ) -> Tensor:
      r"""Create a DCT transformation matrix with shape (``n_mels``, ``n_mfcc``),
      normalized depending on norm.
  
      .. devices:: CPU
  
      .. properties:: TorchScript
  
      Args:
          n_mfcc (int): Number of mfc coefficients to retain
          n_mels (int): Number of mel filterbanks
          norm (str or None): Norm to use (either "ortho" or None)
  
      Returns:
          Tensor: The transformation matrix, to be right-multiplied to
          row-wise data of size (``n_mels``, ``n_mfcc``).
      """
  
      if norm is not None and norm != "ortho":
          raise ValueError('norm must be either "ortho" or None')
  
      # http://en.wikipedia.org/wiki/Discrete_cosine_transform#DCT-II
      n = torch.arange(float(n_mels))
      k = torch.arange(float(n_mfcc)).unsqueeze(1)
      dct = torch.cos(
          math.pi / float(n_mels) * (n + 0.5) * k
      )  # size (n_mfcc, n_mels)
  
      if norm is None:
          dct *= 2.0
      else:
          dct[0] *= 1.0 / math.sqrt(2.0)
          dct *= math.sqrt(2.0 / float(n_mels))
      return dct.t()
  
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 13 for calling a global function with example usage: create_dct(n_mfcc, n_mels, norm) and returns: dct