傅里叶变换
就是得出图形的线性方程式
如某图形不知道方程式,通过变换转变成
y=a+bx+cx^2+dx^3+.....
自控测量的时候常常用到
就是得出图形的线性方程式
如某图形不知道方程式,通过变换转变成
y=a+bx+cx^2+dx^3+.....
自控测量的时候常常用到
解决方案 »
- 请教:Run-time error'424'
- 请问对数据库知识一窍不通,要学习VB下数据库编程要从哪着手。。具体怎么做?
- 关于文件目录操作监视代码需求帮助
- setfactory打包工具,在win2k下生成,到win98下问题多多?
- 该怎么读文本文件的内容?
- 第一次用VB开发数据库应用软件,请教各位.
- 在线等:询问一个很简单的问题:关于这是什么控件及如何实现这样的效果问题!!
- 高手请指点:我要在MTS中实现组件事务,可以我却打不到mtxas.dll文件,急!!!!!
- 数组问题,你不一定会!答上马上给分!!!!
- MMcontrol 解决好长时间没有搞定
- 如何用SQL语句将一个字段重置为NULL?
- 如何在VB中打印条码
我手边没有资料.
而且急用.
希望大家能给我提几个实用的建议.
谢谢.
{
ret->re = a->re + b->re;
ret->im = a->im + b->im;
}void TDipWindow::sub(COMPLEX *a,COMPLEX *b,COMPLEX *ret)
{
ret->re = a->re - b->re;
ret->im = a->im - b->im;
}void TDipWindow::mul(COMPLEX *m,COMPLEX *n,COMPLEX *ret)
{
float a,b,c; a = ( m->re - m->im ) * n->im;
b = m->re * ( n->re - n->im );
c = m->im * ( n->re + n->im );
ret->re = a + b;
ret->im = a + c;
}int TDipWindow::reverse(int t,int k)
{
int i,j,m,s; m = t;
s = 0;
for ( i = 0 ; i < k ; i++ )
{
j = m / 2;
s = s * 2 + ( m - j * 2 );
m = j;
} return s;
}void TDipWindow::root(int n)
{
int j; omega->re = 1;
omega->im = 0;
omega[1].re = (float)cos(2 * PI / n);
omega[1].im = -(float)sin(2 * PI / n); for ( j = 2 ; j < n/2 ; j++ )
mul(&omega[1],&omega[j-1],&omega[j]); for ( j = n/2 ; j < n ; j++ )
{
omega[j].re = -omega[j-n/2].re;
omega[j].im = -omega[j-n/2].im;
}
}void TDipWindow::fft(int n)
{
int s,k,m,l,nv,t,j;
COMPLEX podd,ret; k = (int)(log(n) / log(2) + 0.5);
nv = n;
m = 1;
for ( l = k-1 ; l >= 0 ; l-- )
{
for ( t = 0 ; t < m * nv ; t+=nv )
for ( j = 0 ; j < nv/2 ; j++ )
{
s = (t+j) / (int)pow(2,l);
s = reverse(s,k); ret = omega[s];
mul(&ret,&p[t+j+nv/2],&podd);
sub(&p[t+j],&podd,&p[t+j+nv/2]);
add(&p[t+j],&podd,&p[t+j]);
}
m *= 2;
nv /= 2;
} for ( t = 0 ; t < n ; t++ )
{
s = reverse(t,k);
f[t] = p[s];
}
}void TDipWindow::nfft(int n)
{
int i; for ( i = 0 ; i < n ; i++ )
p[i] = f[i]; fft(n); p[0] = f[0];
for ( i = 1 ; i < n ; i++ )
p[i] = f[n-i];
for ( i = 0 ; i < n ; i++ )
{
p[i].re /= n;
p[i].im /= n;
}
}void TDipWindow::tfft(int m,int n)
{
int i,j; root(n);
p = (COMPLEX *) new COMPLEX[n];
f = (COMPLEX *) new COMPLEX[n]; for ( i = 0 ; i < m ; i++ )
{
for ( j = 0 ; j < n ; j++ )
p[j] = SpaceField[i][j]; fft(n); for ( j = 0 ; j < n ; j++ )
FreqField[i][j] = f[j];
} delete p;
delete f; for ( i = 0 ; i < m ; i++ )
for ( j = 0 ; j < n ; j++ )
SpaceField[i][j] = FreqField[i][j]; root(m);
p = (COMPLEX *) new COMPLEX[m];
f = (COMPLEX *) new COMPLEX[m]; for ( j = 0 ; j < n ; j++ )
{
for ( i = 0 ; i < m ; i++ )
p[i] = SpaceField[i][j]; fft(m); for ( i = 0 ; i < m ; i++ )
FreqField[i][j] = f[i];
} delete p;
delete f;
}void TDipWindow::ntfft(int m,int n)
{
int i,j; root(n);
p = (COMPLEX *) new COMPLEX[n];
f = (COMPLEX *) new COMPLEX[n]; for ( i = 0 ; i < m ; i++ )
{
for ( j = 0 ; j < n ; j++ )
f[j] = FreqField[i][j]; nfft(n); for ( j = 0 ; j < n ; j++ )
SpaceField[i][j] = p[j];
} delete p;
delete f; for ( i = 0 ; i < m ; i++ )
for ( j = 0 ; j < n ; j++ )
FreqField[i][j] = SpaceField[i][j]; root(m);
p = (COMPLEX *) new COMPLEX[m];
f = (COMPLEX *) new COMPLEX[m]; for ( j = 0 ; j < n ; j++ )
{
for ( i = 0 ; i < m ; i++ )
f[i] = FreqField[i][j]; nfft(m); for ( i = 0 ; i < m ; i++ )
SpaceField[i][j] = p[i];
} delete p;
delete f;
}
Syntax
Y = fft(X)
Y = fft(X,n)
Y = fft(X,[],dim)
Y = fft(X,n,dim)Description
Y = fft(X) returns the discrete Fourier transform (DFT) of vector X, computed with a fast Fourier transform (FFT) algorithm.If X is a matrix, fft returns the Fourier transform of each column of the matrix.If X is a multidimensional array, fft operates on the first nonsingleton dimension.Y = fft(X,n) returns the n-point DFT. If the length of X is less than n, X is padded with trailing zeros to length n. If the length of X is greater than n, the sequence X is truncated. When X is a matrix, the length of the columns are adjusted in the same manner.Y = fft(X,[],dim) and Y = fft(X,n,dim) applies the FFT operation across the dimension dim.
2、输出一般是变换后的数据集。
3、你打开APIViewer就该明白了。
4、问题:你是否知道FFT的算法?如果不知道,那讨论起来会很麻烦。
5、建议:去看看信号处理的书,绝对有FFT的算法和意义。
请告诉我怎么才能在基于VB的情况下,
调用FTP的DLL文件,(这样的文件还没有找到)
或者在VB下写这样的函数(有现成的最好,我改造不好的)
最后是输出.最好做成图就放到表单上面.
不知道有没有人做过这些东西,
敬请赐教.