我正在玩RoutedCommand,我遇到了一个问题,我找到了如何传递一个参数,以便我的Executed方法可以在e.Parameter中使用它?
我的路由命令:
public static readonly RoutedCommand Foo = new RoutedCommand();
Run Code Online (Sandbox Code Playgroud)
用法:
menuItem.Command = Commands.Foo;
Run Code Online (Sandbox Code Playgroud)
执行:
private void Foo_Executed(object sender, ExecutedRoutedEventArgs e)
{
object parameter = e.Parameter; // this is always null
}
Run Code Online (Sandbox Code Playgroud) 我有一个浮点数组,我从传感器得到,并希望在通过FFT运行信号后得到幅度(在此之前,使用高通滤波器和Hann窗函数处理样本).
使用AForge.Math库FFT类,它将复数数组作为参数,我提出了以下代码:
Complex[] complex = new Complex[1024];
for (int i = 0; i < 1024 - 1; i++)
{
complex[i] = new Complex(windowedSamples[i], 0);
}
FourierTransform.FFT(complex, FourierTransform.Direction.Forward);
return complex.Select(x => Math.Sqrt(Math.Sqrt(x.Re) + Math.Sqrt(x.Im))).ToArray();
Run Code Online (Sandbox Code Playgroud)
运行这个我得到了一些奇怪的结果,并且无法锁定问题.
前10个输入值:
0 0 -3.8454E-05 0.0001737584 0.0006910793 0.001071334 0.00204984 0.00276812 0.001741312 0.001796867
前10个输出值:
0.482303347948843 0.706458195192639 NaN NaN NaN NaN NaN NaN NaN NaN
我的第一个猜测是它可能是想象中的部分,但到目前为止,我读过的所有内容都说在这种情况下它应该设置为0.
我真的很感激帮助解决这个问题.