我希望将matlab代码转换为c#.and 在matlab代码中
nfft=2^nextpow2(nn);
其中NEXTPOW2(N)
表示在matlab中的下一个更高的2的幂。
所以我们如何在c#代码中或在ilnumerics Lab的帮助下自己做同样的功能。 ?
答案 0 :(得分:3)
This可能是最有效的方式,前面也提到了here on SO:
temp = b, a + b
a = temp[0]
b = temp[1]
答案 1 :(得分:2)
如果我理解你的问题:
x = 129;
NextPow = round(2^ceil(log2(x))) % Gives 256 for x = 129
% Gives 2 for x = 2
% Gives 16 for x = 15
答案 2 :(得分:0)
在 .NET Core 中,您可以使用 BitOperations.LeadingZeroCount()
或 BitOperations.Log2()
来获取最高位的位置,然后
return 1L << (BitOperations.Log2(nn - 1) + 1); // or
return 1L << (63 - BitOperations.LeadingZeroCount(nn));
如果 nn
是 ulong
。如果 nn
是 uint
上述位操作是映射到硬件指令的内在函数,因此它们非常快