упаковка кода в модуль - PullRequest
       2

упаковка кода в модуль

0 голосов
/ 11 февраля 2012

Следующий код выполняется без всяких условий

wave = HaarWavelet[];
type = "PrimalLowpass";

h = WaveletFilterCoefficients[
  wave, type, 
  WorkingPrecision -> \[Infinity]
];

h = Flatten[
    Take[h, 
        Range[1, Length[h]], 
        Table[2, {Length[h]}]
        ]
    ]

Но когда его оборачивают в 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
    ]

Я бы хотел, чтобы getWaveletFilter[HaarWavelet[], "PrimalHighpass"] вернул

{1/2, -1/2}

Вместо Mathematica, есть все виды жалоб.Любое предложение?

1 Ответ

6 голосов
/ 11 февраля 2012

Вам нужно поставить точку с запятой между каждым действием в вашем модуле, чтобы отделить их:

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
]

Чтение CompoundExpression (;) для лучшего понимания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...