📄 ls.c
字号:
/////////////////////////////////////////
// 输入为寄存器数为10的M序列信号, //
// 噪声为均值为0,方差为0.1的白噪声, //
// 分别从数据文件Data1和Data2读入。 //
// 执行结果存在数据文件\Data3中。 //
/////////////////////////////////////////
#include "math.h"
#include "stdio.h"
#include "brmul.c"
#include "brinv.c"
int main()
{
FILE *fp1,*fp2,*fp;
int u[600][1];double v[600][1];
double g[51][1],g1[51][1];
int i,j;
double w[500][51],w1[51][500],w2[51][500];
double y[500][1],y1[500][1];
double t[51][51];
fp1 = fopen("data1.txt","r");
fp2 = fopen("data2.txt","r");
for(i = 0;i<600;i++)
{
fscanf(fp1,"%d",&u[i][0]);//输入信号M序列
fscanf(fp2,"%lf",&v[i][0]);//均值为0,方差为0.1的白噪声
}
fclose(fp1);
fclose(fp2);
for(i = 0;i< 51;i++)
g[i][0] = 0.25*exp(-0.5*i)-exp(-0.25*i)+0.75*exp(-i/6);
for(i = 0;i<500;i++)
{
for(j = 0;j<51;j++)
w[i][j] = u[50+i-j][0];
}
for(i = 0;i < 500;i++)
{
for(j = 0;j < 51;j++)
w1[j][i] = w[i][j];
}
brmul(w,g,500,51,1,y);
for(i=0;i<500;i++) y1[i][0] = y[i][0]+v[i][0];
brmul(w1,w,51,500,51,t);
brinv(t,51);
brmul(t,w1,51,51,500,w2);
brmul(w2,y1,51,500,1,g1);
fp = fopen("Data3.txt","w");
fprintf(fp,"真值\t\t计算值\n");
for(i = 0;i<51;i++)
{
fprintf(fp,"%f\t%f\n",g[i][0],g1[i][0]);
}
fclose(fp);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -