|
数值计算程序大放送-数学变换与滤波
////////////////////////////////////////////////////////////// //傅里叶级数逼近 //f-长度为2n+1的数组,存放[0,2Pi]上2n+1个等距点处的函数值 //n-整型变量 //a-长度为n+1的数组,返回时存放傅里叶级数系数ak //b-长度为n+1的数组,返回时存放傅里叶级数系数bk void kfour(double f[],int n,double a[],double b[]); ////////////////////////////////////////////////////////////// //快速离散傅里叶变换(FFT) //pr-长度为n的数组,当l=0时,存放n个采样输入的实部,返回时存放离散傅里叶变换的模; // 当l=1时,存放傅里叶变换的n个实部,返回时存放逆傅里叶变换的模; //pi-长度为n的数组,当l=0时,存放n个采样输入的虚部,返回时存放离散傅里叶变换的幅角(单位为度); // 当l=1时,存放傅里叶变换的n个虚部,返回时存放逆傅里叶变换的幅角(单位为度); //n-整型变量,输入的点数 //k-整型变量,满足n=2^k //fr-长度为n的数组,当l=0时,返回时存放离散傅里叶变换的实部; // 当l=1时,返回时存放逆傅里叶变换的实部 //fi-长度为n的数组,当l=0时,返回时存放离散傅里叶变换的虚部; // 当l=1时,返回时存放逆傅里叶变换的虚部 //l-整型变量,l=1时,计算傅里叶变换,当l=0时,计算逆傅里叶变换 //il-整型变量,il=0时,表示不要求计算傅里叶变换或逆变换的模与幅角 // il=1时,表示要求计算傅里叶变换或逆变换的模与幅角 void kkfft(double pr[],double pi[],int n,int k,double fr[],double fi[],int l,int il); ////////////////////////////////////////////////////////////// //快速沃什(Walsh)变换 //p-长度为n的数组,存放n=2^k个给定的输入序列 //n-整型变量,输入的点数 //k-整型变量,满足n=2^k //x-长度为n的数组,返回时存放沃什(Walsh)变换序列; void kkfwt(double p[],double x[],int n,int k); ////////////////////////////////////////////////////////////// //等距节点五点三次平滑 //n-整型变量,输入的点数,要求n>=5 //y-长度为n的数组,存放n个等距观测点上的观测数据 //yy-长度为n的数组,返回时存放平滑结果 void kkspt(int n,double y[],double yy[]); ////////////////////////////////////////////////////////////// //离散随机线性系统的卡尔曼(kalman)滤波 //n-整型变量,动态系统的维数 //m-整型变量,观测系统的维数 //k-观测序列的长度 //f-n*n数组,系统状态转移矩阵 //q-n*n数组,模型噪声Wk的协方差矩阵 //r-m*m数组,观测噪声Vk的协方差矩阵 //h-m*n数组,观测矩阵 //yy-k*m数组,观测向量序列 //x-k*n数组,x[0,j]存放给定的初值,其余各行返回状态向量估计序列 //p-n*n数组,存放初值P0,返回时存放最后时刻的估计误差协方差矩阵 //g-n*m数组,返回最后时刻的稳定增益矩阵 //调用函数 brinv(double a[],int n); int klman(int n,int m,int k,double f[],double q[],double r[],double h[],double y[],double x[],double p[],double g[]); //////////////////////////////////////////////////////////////
选自<<徐世良数值计算程序集(C)>>
每个程序都加上了适当地注释,陆陆续续干了几个月才整理出来的啊。
今天都给贴出来了
#include <math.h>
//傅里叶级数逼近 //f-长度为2n+1的数组,存放[0,2Pi]上2n+1个等距点处的函数值 //n-整型变量
上一篇: 数值计算程序大放送-特殊函数
下一篇: SPLUS软件授权管理必知
|