Ryo*_*ogi 0 wolfram-mathematica
以下代码无缝执行
wave = HaarWavelet[];
type = "PrimalLowpass";
h = WaveletFilterCoefficients[
wave, type,
WorkingPrecision -> \[Infinity]
];
h = Flatten[
Take[h,
Range[1, Length[h]],
Table[2, {Length[h]}]
]
]
Run Code Online (Sandbox Code Playgroud)
但是当它包裹在一起时Module会出错.考虑这个功能
getWaveletFilter[wave_, type_]:=
Module[{filter}, (* treated as local *)
filter = WaveletFilterCoefficients[
wave, type, WorkingPrecision -> \[Infinity]
]
filter = Flatten[
Take[filter,
Range[1, Length[filter]],
Table[2, {Length[filter]}]
]
]
filter
]
Run Code Online (Sandbox Code Playgroud)
我想getWaveletFilter[HaarWavelet[], "PrimalHighpass"]
回来
{1/2, -1/2}
Run Code Online (Sandbox Code Playgroud)
相反,Mathematica有各种各样的抱怨.有什么建议吗?
您需要在模块中的每个操作之间放置一个分号以分隔它们:
getWaveletFilter[wave_, type_]:=
Module[{filter}, (* treated as local *)
filter = WaveletFilterCoefficients[
wave, type, WorkingPrecision -> \[Infinity]
];
filter = Flatten[
Take[filter,
Range[1, Length[filter]],
Table[2, {Length[filter]}]
]
];
filter
]
Run Code Online (Sandbox Code Playgroud)
阅读CompoundExpression(;)以便更好地理解.