package ca.uol.aig.fftpack;
/**
* @author Baoshe Zhang
* @author Astronomical Instrument Group of University of Lethbridge.
*/
class RealDoubleFFT_Mixed
{
/*-------------------------------------------------
radf2: Real FFT's forward processing of factor 2
-------------------------------------------------*/
void radf2(int ido, int l1, final double cc[], double ch[],
final double wtable[], int offset)
{
int i, k, ic;
double ti2, tr2;
int iw1;
iw1 = offset;
for(k=0; k<l1; k++)
{
ch[2*k*ido]=cc[k*ido]+cc[(k+l1)*ido];
ch[(2*k+1)*ido+ido-1]=cc[k*ido]-cc[(k+l1)*ido];
}
if(ido<2) return;
if(ido !=2)
{
for(k=0; k<l1; k++)
{
for(i=2; i<ido; i+=2)
{
ic=ido-i;
tr2 = wtable[i-2+iw1]*cc[i-1+(k+l1)*ido]
+wtable[i-1+iw1]*cc[i+(k+l1)*ido];
ti2 = wtable[i-2+iw1]*cc[i+(k+l1)*ido]
-wtable[i-1+iw1]*cc[i-1+(k+l1)*ido];
ch[i+2*k*ido]=cc[i+k*ido]+ti2;
ch[ic+(2*k+1)*ido]=ti2-cc[i+k*ido];
ch[i-1+2*k*ido]=cc[i-1+k*ido]+tr2;
ch[ic-1+(2*k+1)*ido]=cc[i-1+k*ido]-tr2;
}
}
if(ido%2==1)return;
}
for(k=0; k<l1; k++)
{
ch[(2*k+1)*ido]=-cc[ido-1+(k+l1)*ido];
ch[ido-1+2*k*ido]=cc[ido-1+k*ido];
}
}
/*-------------------------------------------------
radb2: Real FFT's backward processing of factor 2
-------------------------------------------------*/
void radb2(int ido, int l1, final double cc[], double ch[],
final double wtable[], int offset)
{
int i, k, ic;
double ti2, tr2;
int iw1 = offset;
for(k=0; k<l1; k++)
{
ch[k*ido]=cc[2*k*ido]+cc[ido-1+(2*k+1)*ido];
ch[(k+l1)*ido]=cc[2*k*ido]-cc[ido-1+(2*k+1)*ido];
}
if(ido<2) return;
if(ido !=2)
{
for(k=0; k<l1;++k)
{
for(i=2; i<ido; i+=2)
{
ic=ido-i;
ch[i-1+k*ido]=cc[i-1+2*k*ido]+cc[ic-1+(2*k+1)*ido];
tr2=cc[i-1+2*k*ido]-cc[ic-1+(2*k+1)*ido];
ch[i+k*ido]=cc[i+2*k*ido]-cc[ic+(2*k+1)*ido];
ti2=cc[i+(2*k)*ido]+cc[ic+(2*k+1)*ido];
ch[i-1+(k+l1)*ido]=wtable[i-2+iw1]*tr2-wtable[i-1+iw1]*ti2;
ch[i+(k+l1)*ido]=wtable[i-2+iw1]*ti2+wtable[i-1+iw1]*tr2;
}
}
if(ido%2==1) return;
}
for(k=0; k<l1; k++)
{
ch[ido-1+k*ido]=2*cc[ido-1+2*k*ido];
ch[ido-1+(k+l1)*ido]=-2*cc[(2*k+1)*ido];
}
}
/*-------------------------------------------------
radf3: Real FFT's forward processing of factor 3
-------------------------------------------------*/
void radf3(int ido, int l1, final double cc[], double ch[],
final double wtable[], int offset)
{
final double taur=-0.5D;
final double taui=0.866025403784439D;
int i, k, ic;
double ci2, di2, di3, cr2, dr2, dr3, ti2, ti3, tr2, tr3;
int iw1, iw2;
iw1 = offset;
iw2 = iw1 + ido;
for(k=0; k<l1; k++)
{
cr2=cc[(k+l1)*ido]+cc[(k+2*l1)*ido];
ch[3*k*ido]=cc[k*ido]+cr2;
ch[(3*k+2)*ido]=taui*(cc[(k+l1*2)*ido]-cc[(k+l1)*ido]);
ch[ido-1+(3*k+1)*ido]=cc[k*ido]+taur*cr2;
}
if(ido==1) return;
for(k=0; k<l1; k++)
{
for(i=2; i<ido; i+=2)
{
ic=ido-i;
dr2 = wtable[i-2+iw1]*cc[i-1+(k+l1)*ido]
+wtable[i-1+iw1]*cc[i+(k+l1)*ido];
di2 = wtable[i-2+iw1]*cc[i+(k+l1)*ido]
-wtable[i-1+iw1]*cc[i-1+(k+l1)*ido];
dr3 = wtable[i-2+iw2]*cc[i-1+(k+l1*2)*ido]
+wtable[i-1+iw2]*cc[i+(k+l1*2)*ido];
di3 = wtable[i-2+iw2]*cc[i+(k+l1*2)*ido]
-wtable[i-1+iw2]*cc[i-1+(k+l1*2)*ido];
cr2 = dr2+dr3;
ci2 = di2+di3;
ch[i-1+3*k*ido]=cc[i-1+k*ido]+cr2;
ch[i+3*k*ido]=cc[i+k*ido]+ci2;
tr2=cc[i-1+k*ido]+taur*cr2;
ti2=cc[i+k*ido]+taur*ci2;
tr3=taui*(di2-di3);
ti3=taui*(dr3-dr2);
ch[i-1+(3*k+2)*ido]=tr2+tr3;
ch[ic-1+(3*k+1)*ido]=tr2-tr3;
ch[i+(3*k+2)*ido]=ti2+ti3;
ch[ic+(3*k+1)*ido]=ti3-ti2;
}
}
}
/*-------------------------------------------------
radb3: Real FFT's backward processing of factor 3
-------------------------------------------------*/
void radb3(int ido, int l1, final double cc[], double ch[],
final double wtable[], int offset)
{
final double taur=-0.5D;
final double taui=0.866025403784439D;
int i, k, ic;
double ci2, ci3, di2, di3, cr2, cr3, dr2, dr3, ti2, tr2;
int iw1, iw2;
iw1 = offset;
iw2 = iw1 + ido;
for(k=0; k<l1; k++)
{
tr2=2*cc[ido-1+(3*k+1)*ido];
cr2=cc[3*k*ido]+taur*tr2;
ch[k*ido]=cc[3*k*ido]+tr2;
ci3=2*taui*cc[(3*k+2)*ido];
ch[(k+l1)*ido]=cr2-ci3;
ch[(k+2*l1)*ido]=cr2+ci3;
}
if(ido==1) return;
for(k=0; k<l1; k++)
{
for(i=2; i<ido; i+=2)
{
ic=ido-i;
tr2=cc[i-1+(3*k+2)*ido]+cc[ic-1+(3*k+1)*ido];
cr2=cc[i-1+3*k*ido]+taur*tr2;
ch[i-1+k*ido]=cc[i-1+3*k*ido]+tr2;
ti2=cc[i+(3*k+2)*ido]-cc[ic+(3*k+1)*ido];
ci2=cc[i+3*k*ido]+taur*ti2;
ch[i+k*ido]=cc[i+3*k*ido]+ti2;
cr3=taui*(cc[i-1+(3*k+2)*ido]-cc[ic-1+(3*k+1)*ido]);
ci3=taui*(cc[i+(3*k+2)*ido]+cc[ic+(3*k+1)*ido]);
dr2=cr2-ci3;
dr3=cr2+ci3;
di2=ci2+cr3;
di3=ci2-cr3;
ch[i-1+(k+l1)*ido] = wtable[i-2+iw1]*dr2
-wtable[i-1+iw1]*di2;
ch[i+(k+l1)*ido] = wtable[i-2+iw1]*di2
+wtable[i-1+iw1]*dr2;
ch[i-1+(k+2*l1)*ido] = wtable[i-2+iw2]*dr3
-wtable[i-1+iw2]*di3;
ch[i+(k+2*l1)*ido] = wtable[i-2+iw2]*di3
+wtable[i-1+iw2]*dr3;
}
}
}
/*-------------------------------------------------
radf4: Real FFT's forward processing of factor 4
-------------------------------------------------*/
void radf4(int ido, int l1, final double cc[], double ch[],
final double wtable[], int offset)
{
final double hsqt2=0.7071067811865475D;
int i, k, ic;
double ci2, ci3, ci4, cr2, cr3, cr4, ti1, ti2, ti3, ti4, tr1, tr2, tr3, tr4;
int iw1, iw2, iw3;
iw1 = offset;
iw2 = offset + ido;
iw3 = iw2 + ido;
for(k=0; k<l1; k++)
{
tr1=cc[(k+l1)*ido]+cc[(k+3*l1)*ido];
tr2=cc[k*ido]+cc[(k+2*l1)*ido];
ch[4*k*ido]=tr1+tr2;
ch[ido-1+(4*k+3)*ido]=tr2-tr1;
ch[ido-1+(4*k+1)*ido]=cc[k*ido]-cc[(k+2*l1)*ido];
ch[(4*k+2)*ido]=cc[(k+3*l1)*ido]-cc[(k+l1)*ido];
}
if(ido<2) return;
if(ido !=2)
{
for(k=0; k<l1; k++)
{
for(i=2; i<ido; i+=2)
{
ic=ido-i;
cr2 = wtable[i-2+iw1]*cc[i-1+(k+l1)*ido]
+wtable[i-1+iw1]*cc[i+(k+l1)*ido];
ci2 = wtable[i-2+iw1]*cc[i+(k+l1)*ido]
-wtable[i-1+iw1]*cc[i-1+(k+l1)*ido];
cr3 = wtable[i-2+iw2]*cc[i-1+(k+2*l1)*ido]
+wtable[i-1+iw2]*cc[i+(k+2*l1)*ido];
ci3 = wtable[i-2+iw2]*cc[i+(k+2*l1)*ido]
-wtable[i-1+iw2]*cc[i-1+(k+2*l1)*ido];
cr4 = wtable[i-2+iw3]*cc[i-1+(k+3*l1)*ido]
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
jfftpack_JavaFFT变换.tgz (32个子文件)
jfftpack
javadocs
package-list 19B
deprecated-list.html 4KB
ca
uol
aig
fftpack
Complex1D.html 9KB
package-summary.html 7KB
RealDoubleFFT_Odd_Odd.html 12KB
RealDoubleFFT_Even_Odd.html 12KB
package-frame.html 2KB
RealDoubleFFT_Even.html 12KB
package-tree.html 6KB
ComplexDoubleFFT.html 14KB
RealDoubleFFT_Odd.html 12KB
RealDoubleFFT.html 15KB
help-doc.html 7KB
allclasses-frame.html 1KB
index.html 815B
allclasses-noframe.html 1KB
resources
inherit.gif 57B
stylesheet.css 1KB
constant-values.html 4KB
index-all.html 16KB
packages.html 683B
overview-tree.html 6KB
javasource
ca
uol
aig
fftpack
Complex1D.java 320B
RealDoubleFFT.java 6KB
RealDoubleFFT_Even.java 4KB
ComplexDoubleFFT.java 4KB
RealDoubleFFT_Even_Odd.java 5KB
RealDoubleFFT_Odd_Odd.java 3KB
RealDoubleFFT_Mixed.java 37KB
ComplexDoubleFFT_Mixed.java 19KB
RealDoubleFFT_Odd.java 5KB
README 598B
共 32 条
- 1
资源评论
- Justin-BJ2014-07-14值得参考学习
江王
- 粉丝: 3
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于pygame实现的烟花代码
- mcu-printf关于51单片机使用printf函数进行串口调试的方法
- MySQL和数据表操作
- 微信小程序面试题.pdf
- 基于matlab实现电力系统仿真计算软件包,包括潮流计算,最优潮流计算等.rar
- 基于matlab实现电力系统各种故障波形仿真,单相接地故障,两相间短路,两相接地短路,三相短路等.rar
- 基于matlab实现电动汽车动力性,爬坡性,续驶里程等性能仿真.rar
- Python动态烟花代码.pdf
- 基于matlab实现串口发送接收数据 可配置端口,波特率等 发送可选择ASCII方式或HEX方式
- matlab基于BP神经网络手写字母识别(单一).zip代码9
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功