对含有矩阵的列表应用傅里叶变换后,画频域的变化图
mathematica吧
全部回复
仅看楼主
level 3
姬如染瞳 楼主
求助各位大佬!我当前画出的是res(1,1)这个矩阵元在时域上的变化,想通过傅里叶变换得到频域上的变化图,代码如下,请问如何操作呢?
Vket[Dim_, n_] := SparseArray[{n, 1} -> 1, {Dim, 1}];
Vbra[Dim_, n_] := SparseArray[{1, n} -> 1, {1, Dim}];
Ket2dm[Vec_] := Vec . Htran[Vec];
Proj[Vec_] := Vec . Htran[Vec];
Expect[\[Rho]_, Opt_] := Tr[\[Rho] . Opt];
UnitV[Vec_] := Vec/Norm[Vec];
Zeros[MM_, NN_] := SparseArray[Table[0, {m, 1, MM}, {n, 1, NN}]];
Ident[n_] := SparseArray[Band[{1, 1}] -> 1, {n, n}]
sigX = SparseArray[{{0, 1}, {1, 0}}];
sigZ = SparseArray[{{1, 0}, {0, -1}}];
sigY = SparseArray[{{0, -I}, {I, 0}}];
sig0 = Ident[2];
sigP = SparseArray[
MatrixForm[
SparseArray[Automatic, {2, 2}, 0, {1, {{0, 1, 1}, {{2}}}, {1}}]]];
sigM = SparseArray[
MatrixForm[
SparseArray[Automatic, {2, 2}, 0, {1, {{0, 1, 1}, {{2}}}, {1}}]]];
\[Gamma]e = (-(1.76/(2*Pi)))*(10^11/
10^6); B = 0.02; \[CapitalOmega] = \[Gamma]e*
B*10^2; up = {{1}, {0}};
down = {{0}, {1}};
\[Rho]0 =
KroneckerProduct[down,
Transpose[
down]]; H1 = {{0, \[CapitalOmega]/Sqrt[2]}, {\[CapitalOmega]/
Sqrt[2], 0}};
{values, VV} = Eigensystem[H1];
VV = (1/Sqrt[2])*Transpose[VV];
Op = Vket[2, 2] . Vbra[2, 2];
U[t_] := VV . DiagonalMatrix[Exp[(-I)*values*t]] .
ConjugateTranspose[VV];
dt = 0.1; Tmax = 200;
Print["dt=", dt, " ns"];
Ts = Table[n*dt, {n, 1, Tmax}];
res0 = Table[
rho = U[Ts[[n]]] . \[Rho]0 .
ConjugateTranspose[U[Ts[[n]]]]; {Ts[[n]], Expect[rho, Op]}, {n,
1, Tmax}];
trans = Fourier[res0]
res1 = Table[
rho = U[Ts[[n]]] . \[Rho]0 .
ConjugateTranspose[U[Ts[[n]]]]; {Ts[[n]],
Expect[trans, Op]}, {n, 1, Tmax}];
p1 = ListLinePlot[Abs[res0], PlotRange -> Automatic,
AxesLabel -> {Style["t/0.1ns", 15, Bold],
Style["|0><0|态布居度", 15, Bold]}]
p2 = ListLinePlot[Abs[res1], PlotRange -> Automatic,
AxesLabel -> {Style["t/0.1\[Mu]s", 15, Bold],
Style["|0><0|态布居度", 15, Bold]}]
2020年08月21日 08点08分 1
吧务
level 15
总之你先看看 Periodogram 的帮助。
2020年09月05日 06点09分 2
1