📄 walsh.c
字号:
/*
Walsh function (order from 0 to 32768, argument from 0 to 1)
x = wal(n,Q);
int n - order, double Q = walsh angle (0...1)
(c)Max
*/
#include <math.h>
unsigned char walsh(unsigned int w,double Q)
{
unsigned char k,n,wl,prev_bit,curr_bit;
unsigned int nn;
double fi;
nn=n=wl=1;
while(nn<w)
{
nn<<=1;
n++;
}
prev_bit = w&1;
w>>=1;
for(k=1;k<=n;k++)
{
curr_bit = w&1;
w>>=1;
if(curr_bit^prev_bit)
{
fi=Q*(double)(1u<<k);
fi-=2.0*floor(fi*0.5);
if(fi>=1.0) wl^=1;
}
prev_bit = curr_bit;
}
return wl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -