1

私はn x mデータの行列を持っています。

各列の要素を含む合計を持つ関数を作成して、値を入力すると1 x m行が取得されるようにするにはどうすればよいですか ( where m > 100)?

より具体的には、各列のデータの離散フーリエ変換を計算しています。これは、入力した入力周波数に対して機能するはずです。

単一の列のコードは次のとおりです。

(* Length of time data *)
n = Length[t]

(* Compute discrete fourier transform at specified frequency f *)
DFT[f_] := (t[[2]] - t[[1]]) Sum[
    mat[[i + 1]] * Exp[2 Pi I f mat[[i + 1]]], {i, 0, n - 1}];

DFTこれを m 列に拡張して、特定の頻度で特定の列の を計算したい場合に、1 x m行の要素を抽出するだけでよいようにします。

のような関数を検討しましたMapが、行の各要素の値を入力することで関数を直接適用するようですが、これはまさに私が望むものではありません。

4

2 に答える 2

1

列に関数をマップしたいだけだと思いますか?

mat = RandomInteger[{0, 10}, {5, 6}];
map[f_, mat_?(MatrixQ[#] &), c_Integer /; c > 0] := f /@ mat[[All, c]]

Mathematica グラフィックス

map[f, mat, 2]

Mathematica グラフィックス

于 2013-08-06T07:22:00.633 に答える