資源簡介
c語言編寫的FxLMS算法程序
代碼片段和文件信息
#define?S_FUNCTION_NAME??FxLms//這里把文件名sfuntmpl_basic修改為FxLms
#define?S_FUNCTION_LEVEL?2
#include?“simstruc.h“
//程序里面要用到的頭文件在這里引用,如“math.h”等。
//double?u;?//定義全局變量
int?j;
double?d[1000001];//用于存儲輸入信號x
double?r[1000001];//用于存儲輸入信號xx
static?void?mdlInitializeSizes(SimStruct?*S)
{
?//這個函數(shù)用來設置輸入、輸出和參數(shù)的。
????ssSetNumSFcnParams(S5);??/*設置參數(shù)個數(shù),這里為0?*/
????if?(ssGetNumSFcnParams(S)?!=?ssGetSFcnParamsCount(S))?{
????????return;
????}
????ssSetNumContStates(S?0);//設置連續(xù)狀態(tài)的個數(shù),缺省為0;
????ssSetNumDiscStates(S?0);//設置離散狀態(tài)的個數(shù),缺省為0;
????if?(!ssSetNumInputPorts(S?4))?return;//設置輸入變量的個數(shù),這里為1
????ssSetInputPortWidth(S?0?1);?//設置輸入變量0的維數(shù)為1
????ssSetInputPortWidth(S?1?1);?//設置輸入變量1的維數(shù)為1
????ssSetInputPortWidth(S?2?1);?//設置輸入變量2的維數(shù)為1
????ssSetInputPortWidth(S?3?1);
????ssSetInputPortRequiredContiguous(S?0?true);?//設置input0的訪問方式,true就是臨近訪問,這樣指針的增量后就可以直接訪問下個input端口了。
????ssSetInputPortRequiredContiguous(S?1?true);?
????ssSetInputPortRequiredContiguous(S?2?true);?
????ssSetInputPortRequiredContiguous(S?3?true);
????ssSetInputPortDirectFeedThrough(S?0?1);//?設置輸入端口的信號是否mdlOutputs函數(shù)中使用,這兒設置為true。
????ssSetInputPortDirectFeedThrough(S?1?1);
????ssSetInputPortDirectFeedThrough(S?2?1);
????ssSetInputPortDirectFeedThrough(S?3?1);
????if?(!ssSetNumOutputPorts(S?2))?return;//設置輸出變量的個數(shù)
????ssSetOutputPortWidth(S?0?1);//設置輸出變量0的維數(shù)為1維
????ssSetOutputPortWidth(S?1?40);//設置輸出變量1的維數(shù)為40維w濾波器系數(shù)為40
????ssSetNumSampleTimes(S0.0001);?//設置采樣時間,此處為0.001s。(感覺沒什么用)
????ssSetNumRWork(S?0);//不管
????ssSetNumIWork(S?0);
????ssSetNumPWork(S?0);
????ssSetNumModes(S?0);
????ssSetNumNonsampledZCs(S?0);
????ssSetOptions(S?0);
//下面可以寫全局變量的初始化程序
????j=0;
}
static?void?mdlInitializeSampleTimes(SimStruct?*S)//暫時不管
{
????ssSetSampleTime(S?0?CONTINUOUS_SAMPLE_TIME);
????ssSetOffsetTime(S?0?0.0);
?
}
#define?MDL_INITIALIZE_CONDITIONS???/*?Change?to?#undef?to?remo
評論
共有 條評論