Skip to main content
added 31 characters in body
Source Link
Coolwater
  • 20.5k
  • 3
  • 39
  • 66

The documentation contains the following inverse for the 1D case:

dtft = ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1}, ω]
Table[InverseFourierSequenceTransform[dtft, ω, n], {n, 0, Length[dtft] - 1}]

In higher dimension

InverseListFourierSequenceTransform[L_, p_List] :=
         Normal[SparseArray[With[{sz = Length[p]},
           With[{xs = Unique[ConstantArray["x", sz]], 
                 cs = Unique[ConstantArray["c", sz + 1]]}, (Remove /@ Join[cs, xs]; #)&[
         (List @@ InverseFourierTransform[L, p, xs + 1, FourierParameters -> {1, 1}] /.
           Pattern[Evaluate[Last[cs]], Blank[]] Times @@ MapThread[DiracDelta[# + 
             Pattern[#2, Blank[]]] &, {xs, Most[cs]}] -> #) &[Most[cs] -> Last[cs]]]]]]Last[cs]]]]]]]

which also works in 1D if you provide the variable argument in a list.

Note that it is only a right inverse. A left inverse doesn't exist because of the we don't have injectivity:

 ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1, 0}, \[Omega]]ω] ===
   ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1}, \[Omega]]ω]

True

The documentation contains the following inverse for the 1D case:

dtft = ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1}, ω]
Table[InverseFourierSequenceTransform[dtft, ω, n], {n, 0, Length[dtft] - 1}]

In higher dimension

InverseListFourierSequenceTransform[L_, p_List] :=
         Normal[SparseArray[With[{sz = Length[p]},
           With[{xs = Unique[ConstantArray["x", sz]], 
                 cs = Unique[ConstantArray["c", sz + 1]]},
         (List @@ InverseFourierTransform[L, p, xs + 1, FourierParameters -> {1, 1}] /.
           Pattern[Evaluate[Last[cs]], Blank[]] Times @@ MapThread[DiracDelta[# + 
             Pattern[#2, Blank[]]] &, {xs, Most[cs]}] -> #) &[Most[cs] -> Last[cs]]]]]]

which also works in 1D if you provide the variable argument in a list.

Note that it is only a right inverse. A left inverse doesn't exist because of the we don't have injectivity:

 ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1, 0}, \[Omega]] ===
   ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1}, \[Omega]]

True

The documentation contains the following inverse for the 1D case:

dtft = ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1}, ω]
Table[InverseFourierSequenceTransform[dtft, ω, n], {n, 0, Length[dtft] - 1}]

In higher dimension

InverseListFourierSequenceTransform[L_, p_List] :=
         Normal[SparseArray[With[{sz = Length[p]},
           With[{xs = Unique[ConstantArray["x", sz]], 
                 cs = Unique[ConstantArray["c", sz + 1]]}, (Remove /@ Join[cs, xs]; #)&[
         (List @@ InverseFourierTransform[L, p, xs + 1, FourierParameters -> {1, 1}] /.
           Pattern[Evaluate[Last[cs]], Blank[]] Times @@ MapThread[DiracDelta[# + 
             Pattern[#2, Blank[]]] &, {xs, Most[cs]}] -> #) &[Most[cs] -> Last[cs]]]]]]]

which also works in 1D if you provide the variable argument in a list.

Note that it is only a right inverse. A left inverse doesn't exist because of the we don't have injectivity:

 ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1, 0}, ω] ===
   ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1}, ω]

True

Post Undeleted by Coolwater
deleted 44 characters in body
Source Link
Coolwater
  • 20.5k
  • 3
  • 39
  • 66

The documentation contains the following inverse for the 1D case:

dtft = ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1}, ω]
Table[InverseFourierSequenceTransform[dtft, ω, n], {n, 0, Length[dtft] - 1}]

In higher dimension

InverseListFourierSequenceTransform[L_, p_List] := 
 With[        Normal[SparseArray[With[{sz = Length[p]}, 
           With[{xs = Unique[ConstantArray["x", sz]], 
                 cs = Unique[ConstantArray["c", sz + 1]]},
    (Remove /@ Join[xs, cs]; #)&[Partition[#, Power[Length[#], 1/sz]] &[
      Sort[List(List @@ InverseFourierTransform[L, p, xs + 1, FourierParameters -> {1, 1}] /.
           Pattern[Evaluate[Last[cs]], Blank[]] Times @@ MapThread[DiracDelta[    MapThread[DiracDelta[# + 
          # +  Pattern[#2, Blank[]]] &, {xs, Most[cs]}] -> cs][[All,#) sz&[Most[cs] +-> 1]]]]]]Last[cs]]]]]]

which also works in 1D if you provide the variable argument in a list.

Note that it is only a right inverse. A left inverse doesn't exist because of the we don't have injectivity:

 ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1, 0}, \[Omega]] ===
   ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1}, \[Omega]]

True

The documentation contains the following inverse for the 1D case:

dtft = ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1}, ω]
Table[InverseFourierSequenceTransform[dtft, ω, n], {n, 0, Length[dtft] - 1}]

In higher dimension

InverseListFourierSequenceTransform[L_, p_List] := With[{sz = Length[p]}, 
       With[{xs = Unique[ConstantArray["x", sz]],
             cs = Unique[ConstantArray["c", sz + 1]]},
    (Remove /@ Join[xs, cs]; #)&[Partition[#, Power[Length[#], 1/sz]] &[
      Sort[List @@ InverseFourierTransform[L, p, xs + 1, FourierParameters -> {1, 1}] /.
        Pattern[Evaluate[Last[cs]], Blank[]] Times @@ MapThread[DiracDelta[      
          # + Pattern[#2, Blank[]]] &, {xs, Most[cs]}] -> cs][[All, sz + 1]]]]]]

which also works in 1D if you provide the variable argument in a list

The documentation contains the following inverse for the 1D case:

dtft = ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1}, ω]
Table[InverseFourierSequenceTransform[dtft, ω, n], {n, 0, Length[dtft] - 1}]

In higher dimension

InverseListFourierSequenceTransform[L_, p_List] := 
         Normal[SparseArray[With[{sz = Length[p]},
           With[{xs = Unique[ConstantArray["x", sz]], 
                 cs = Unique[ConstantArray["c", sz + 1]]},
         (List @@ InverseFourierTransform[L, p, xs + 1, FourierParameters -> {1, 1}] /.
           Pattern[Evaluate[Last[cs]], Blank[]] Times @@ MapThread[DiracDelta[# + 
             Pattern[#2, Blank[]]] &, {xs, Most[cs]}] -> #) &[Most[cs] -> Last[cs]]]]]]

which also works in 1D if you provide the variable argument in a list.

Note that it is only a right inverse. A left inverse doesn't exist because of the we don't have injectivity:

 ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1, 0}, \[Omega]] ===
   ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1}, \[Omega]]

True

Post Deleted by Coolwater
Source Link
Coolwater
  • 20.5k
  • 3
  • 39
  • 66

The documentation contains the following inverse for the 1D case:

dtft = ListFourierSequenceTransform[{1/5, 1/4, 1/3, 1/2, 1}, ω]
Table[InverseFourierSequenceTransform[dtft, ω, n], {n, 0, Length[dtft] - 1}]

In higher dimension

InverseListFourierSequenceTransform[L_, p_List] := With[{sz = Length[p]}, 
       With[{xs = Unique[ConstantArray["x", sz]],
             cs = Unique[ConstantArray["c", sz + 1]]},
    (Remove /@ Join[xs, cs]; #)&[Partition[#, Power[Length[#], 1/sz]] &[
      Sort[List @@ InverseFourierTransform[L, p, xs + 1, FourierParameters -> {1, 1}] /.
        Pattern[Evaluate[Last[cs]], Blank[]] Times @@ MapThread[DiracDelta[      
          # + Pattern[#2, Blank[]]] &, {xs, Most[cs]}] -> cs][[All, sz + 1]]]]]]

which also works in 1D if you provide the variable argument in a list