Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2024.1.0 - 日本語


dst

離散サイン変換.

idst

逆離散サイン変換.

呼び出し手順

X=dst(A [,sign] [,option])
X=dst(A,sign,selection [,option])
X=dst(A,sign,dims,incr [,option])
X=idst(A [,option])
X=idst(A,selection [,option])
X=idst(A,dims,incr [,option])

引数

A

実数/複素ベクトルまたは実数/複素配列 (ベクトル, 行列または N-D 配列).

X
Aと同じ大きさの 実数または複素配列.
sign
整数.値は 1または -1となります. 順方向または逆変換を選択します. デフォルト値は-1 (順方向変換)です.
selection
Aの各配列次元への添字を有する ベクトル. 詳細は説明を参照ください.
dims
整数値を有する正の数値ベクトル, または正の整数のベクトル. 詳細は説明を参照ください.

各要素は Aの要素の総数の約数となります.

各要素の積はAの要素の総数よりも 小さな値とする必要があります.

incr
整数値を有する正の数値ベクトル, または正の整数のベクトル. 詳細は説明を参照ください.

incr は, dimsの要素数と同じにする 必要があります.

各要素は,Aの要素の総数の約数とする 必要があります.

incr の要素は, 厳密に昇順とする必要があります.

option
文字列. 値は,順方向変換の場合, "dst1", "dst2", "dst4" または "dst", 逆変換の場合は "dst1", "dst3", "dst4" または "idst" です. デフォルト値は,順方向変換の場合に"dct", 逆変換の場合に"idct"です. 詳細は説明を参照ください.

説明

変換の説明

この関数は, パラメータ値optionで指定したシフト量を用いて 順方向または逆方向の1次元またはN次元離散サイン変換を 行います:

  • "dst1"の場合, この関数は 正規化しないDST-I変換を計算します. 長さn のベクトルの1次元変換は以下のようになります:

    $X(k) = 2 \sum_{i=1}^{n} {A(i) \cos\frac{\pi i k}{n+1}},
                            k=1\ldots n$

  • "dst2"の場合, この関数は 正規化しないDST-II変換を計算します. 長さn のベクトルの1次元変換は以下のようになります:

    $X(k) = 2 \sum_{i=1}^{n} {A(i) \cos\frac{\pi ( i
                            -1/2) k}{n}}, k=1\ldots n$

  • "dst3"の場合, この関数は 正規化しないDST-III変換を計算します. 長さn のベクトルの1次元変換は以下のようになります:

    $X(k) = (-1)^{k-1}A(n) + 2 \sum_{i=1}^{n-1} {A(i) \cos\frac{\pi  i (k-1/2)}{n}}, k=1\ldots n$

  • "dst4"の場合, この関数は 正規化しないDST-IV変換を計算します. 長さn のベクトルの1次元変換は以下のようになります:

    $X(k) = 2 \sum_{i=1}^{n} {A(i) \cos\frac{\pi (i
                            -1/2)(k-1/2)}{n}}, k=1\ldots n$

  • "dst"の場合, この関数は 正規化されたDST-I変換を計算します. 長さn のベクトルの1次元変換は以下のようになります:

    $X(k) = \sum_{i=1}^n {A(i) \cos\frac{\pi i k} {n+1}},
                            k=1\ldots n$

  • "idst"の場合, この関数は 正規化されたDST-I変換を計算します. 長さn のベクトルの1次元変換は以下のようになります:

    $X(k) = \frac{2}{n+1} \sum_{i=1}^n {A(i) \cos\frac{\pi i k}
                            {n+1}}, k=1\ldots n$

多次元のDST変換は,一般に,配列の各次元方向の1次元変換の分離可能な積です. 正規化しない変換の場合,順方向変換の後に逆方向多次元変換を行うと,元の配列が各次元の大きさの積で拡大されたものとなります.

構文の説明

短縮構文
順方向

X=dst(A,-1 [,option]) または X=dst(A [,option]) により, オプション値を指定した順方向変換が得られます. デフォルトは,正規化された DST-I順方向変換です.

Aがベクトルの場合 (1より大きい次元が1つだけの場合), 1次元の変換が行われ, その他の場合にはn次元変換が行われます.

(引数-1は"inverse"ではなく, 指数の符号を意味します).

逆方向

X=dst(A,1 [,option])または X=idst(A [,option])は 逆変換を行います.

Aがベクトルの場合 (1より大きい次元が1つだけの場合), 1次元の変換が行われ, その他の場合にはn次元変換が行われます.

指定した次元方向のDSTの長い構文
  • X=dst(A,sign,selection [,option]) により, 選択した次元方向のAの"スライス"の 順方向または逆方向dstを 効率的に計算することができます.

    例えば, A が3次元配列の場合, X=dst(A,-1,2) は以下と等価になります:

    for i1=1:size(A,1),
      for i3=1:size(A,3),
        X(i1,:,i3)=dst(A(i1,:,i3),-1);
      end
    end

    そして X=dst(A,-1,[1 3]) は 以下と等価になります:

    for i2=1:size(A,2),
      X(:,i2,:)=dst(A(:,i2,:),-1);
    end
  • X=dst(A,sign,dims,incr) は 古い構文であり,この方法でも 指定した次元方向のAのスライスの 順方向または逆方向のdctを行うことができます.

    例えば,An1*n2*n3 個の要素を有する配列の場合, X=dst(A,-1,n1,1)X=dst(matrix(A,[n1,n2,n3]),-1,1) と等価で, X=dst(A,-1,[n1 n3],[1 n1*n2])X=dst(matrix(A,[n1,n2,n3]),-1,[1,3]) と等価です.

dstを最適化

注意: この関数は直近のパラメータをメモリに保持し,2回目に再利用します. これにより(同じパラメータで)連続的にコールした場合の 計算時間が著しく改善されます.

get_fftw_wisdom, set_fftw_wisdom 関数により dstを更に最適化することができます.

アルゴリズム

この関数は fftw3ライブラリ を実行します.

参照

参考文献

Matteo Frigo and Steven G. Johnson, "FFTW Documentation" http://www.fftw.org/#documentation

Report an issue
<< dct Transforms fft >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Jun 17 17:54:18 CEST 2024