我正在matlab中实现cooley-tuckey fft(raddix - 2 DIF / DIT)
算法。对于位反转我想要反转二进制数。所以任何人都可以建议我如何得到binary number(like 100111 -> 111001)
的逆转。从事fft实施工作的人也可以帮我解决这个问题。
答案 0 :(得分:1)
Topic: How to do bit reversal in Matlab?
如果您使用的是双精度浮点('double')数字 这是整数,你可以这样做:
dr = bin2dec(fliplr(dec2bin(d,n))); dr中的%位是相反的顺序
其中n是要反转的位数,并且其中0 <= d <1。 2 ^ N
只要具体而言,您将不会遇到精确问题 整数不超过52位。
和
Re: How to do bit reversal in Matlab?
你需要扭转的数字有多大?我可以问一下 是它的目的吗?也许有一种更有效的方法来解决问题 整个问题。如果数字很大,你可以将这些位存储为 一个字符串。要反转它,只需向后读取字符串!或者使用 fliplr()。
(可能有更好的地方可以问。)
如果是VHDL,我会建议使用'REVERSE'RANGE的别名。
答案 1 :(得分:-1)
取自帮助部分;
Y = swapbytes(X)反转数组X中每个元素的字节顺序,将little-endian值转换为big-endian(反之亦然)。输入数组必须包含所有完整的非复数数字元素。