⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 enhance.c

📁 递归最小二乘滤波器算法
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include "rls.h"

/*定义RLS算法历史变量*/
struct rlshist hist_rls;

int main(int argc, char *argv[])
{
	FILE *filein, *filed, *fileout;
	FILE *filemse;
	double input, refer, output;
	double mse;
	short inputx, outputy, referd;
	int temp = 0;
	
	if(argc == 4){
		
		filein = fopen(argv[1], "rb");
		if(filein == NULL){
			fprintf(stderr, "%s%s%s\n", "Use: ",argv[0], " input1.file input2.file output.file ");
			return 1;
		}

		filed = fopen(argv[2], "rb");
		if(filed == NULL){
			fprintf(stderr, "%s%s%s\n", "Use:", argv[0], " input1.file input2.file output.file ");
			fclose(filein);
			return 1;
		}

		fileout = fopen(argv[3], "wb");
		if(fileout == NULL){
			fprintf(stderr, "%s%s%s\n", "Use:", argv[0], " input1.file input2.file output.file ");
			fclose(filein);
			fclose(filed);
			return 1;
		}

		filemse = fopen("mse.dat","wb");

	}else{
		fprintf(stderr, "%s%s%s\n", "Use:", argv[0], " input1.file input2.file output.file ");
		return 1;
	}

	/*初始化RLS算法*/
	init_rls();

	while((fread(&inputx, sizeof(short), 1, filein) > 0) && (fread(&referd, sizeof(short), 1, filed) > 0)){
		input = (double)(inputx);
		refer = (double)(referd);

		temp++;

		/*调用RLS滤波算法*/
		rls(&input, &refer, &output, temp);

		mse = (refer - output) * (refer - output);

		outputy = (short)(output);

		fwrite(&outputy, sizeof(short), 1, fileout);
		fwrite(&mse, sizeof(double), 1, filemse);
	}

	fclose(filein);
	fclose(filed);
	fclose(fileout);
	fclose(filemse);

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -