我正在将 C++ 代码转换为 C# 代码,它恰好是频域中图像的快速傅里叶变换。只是为了提供一些背景。
这是 C++ 代码的链接:fft.cc
我有一个名为 Step 的函数,它在 C++ 中的签名是这样的:
void step ( int n, int mj, float a[], float b[], float c[], float d[], float w[], float sgn );
并被称为:
step ( n, mj, &x[0*2+0], &x[(n/2)*2+0], &y[0*2+0], &y[mj*2+0], w, sgn );
我想将其转换为 C#,现在此函数在 Y 或 X 数组上运行,具体取决于它是正向快速傅里叶变换还是反向快速傅里叶变换。(更多上下文)
我不明白的是,在 C# 中,什么都不做x[0*2+0]
......首先将一个整数放在方括号中实际上会调用该数组中某个位置的变量。
但是它在 C++ 中做了什么,我知道它&
等同于ref
C# 关键字,它是说从被指向的数组中获取内容,但我觉得在这种情况下它意味着更多。
那么你将如何在 C# 中调用该函数,显然这会失败:
step(n, mj, x[0 * 2 + 0], x[(n / 2) * 2 + 0], y[0 * 2 + 0], y[mj * 2 + 0], w, sgn);