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

📄 fismain.c

📁 交流 模糊控制 交流 模糊控制
💻 C
字号:
/*
 * Stand-alone codes for fuzzy inference systems.
 * J.-S. Roger Jang, 1994.
 * Copyright 1994-2002 The MathWorks, Inc.
 * $Revision: 1.12 $  $Date: 2002/06/05 13:17:18 $
 */

/* This part is for MACs only */
#if defined(applec) || defined(__MWERKS__) || defined (THINK_C) || defined(powerc)

#include <stdio.h>
#include <stdarg.h>

FILE	*output_file;

#define PRINTF macprintf

int macprintf(char* format, ...)	
{
	va_list	arg;
	int		ret;
	
	va_start(arg, format);
	ret = vfprintf(output_file, format, arg);
	va_end(arg);
	
	return(ret);
}
#endif /* applec || __MWERKS__ || THINK_C || powerc */

/* Start of the regular fismain.c */
#include "fis.c"

/***********************************************************************
 Main routine 
 **********************************************************************/

int
main(int argc, char **argv)
{
	FIS *fis;
	int i, j;
	int debug = 0;

	DOUBLE **dataMatrix, **fisMatrix, **outputMatrix;
	char *fis_file, *data_file;
	int data_row_n, data_col_n, fis_row_n, fis_col_n;

#if defined(applec) || defined(__MWERKS__) || defined (THINK_C) || defined(powerc)
	/* For MACs only */
	data_file = "fismain.in";
	fis_file = "fismain.fis";
	output_file = fisOpenFile("fismain.out","w");
#else
	/* input arguments checking */
	if (argc != 3) {
		PRINTF("Usage: %s data_file fis_file\n", argv[0]);
		exit(1);
	}
	data_file = argv[1];
	fis_file = argv[2];
#endif /* applec || __MWERKS__ || THINK_C || powerc */

	/* obtain data matrix and FIS matrix */
	dataMatrix = returnDataMatrix(data_file, &data_row_n, &data_col_n);
	fisMatrix = returnFismatrix(fis_file, &fis_row_n, &fis_col_n);

	/* build FIS data structure */
	fis = (FIS *)fisCalloc(1, sizeof(FIS));
	fisBuildFisNode(fis, fisMatrix, fis_col_n, MF_POINT_N);

	/* error checking */
	if (data_col_n < fis->in_n) {
		PRINTF("Given FIS is a %d-input %d-output system.\n",
			fis->in_n, fis->out_n);
		PRINTF("Given data file does not have enough input entries.\n");
		fisFreeMatrix((void **)dataMatrix, data_row_n);
		fisFreeMatrix((void **)fisMatrix, fis_row_n);
		fisFreeFisNode(fis);
		fisError("Exiting ...");
	}

	/* debugging */
	if (debug)
		fisPrintData(fis);

	/* create output matrix */
	outputMatrix = (DOUBLE **)fisCreateMatrix(data_row_n, fis->out_n, sizeof(DOUBLE));

	/* evaluate FIS on each input vector */
	for (i = 0; i < data_row_n; i++)
		getFisOutput(dataMatrix[i], fis, outputMatrix[i]);

	/* print output vector */
	for (i = 0; i < data_row_n; i++) {
		for (j = 0; j < fis->out_n; j++)
			PRINTF("%.12f ", outputMatrix[i][j]);
		PRINTF("\n");
	}

	/* clean up memory */
	fisFreeFisNode(fis);
	fisFreeMatrix((void **)dataMatrix, data_row_n);
	fisFreeMatrix((void **)fisMatrix, fis_row_n);
	fisFreeMatrix((void **)outputMatrix, data_row_n);
	exit(0);
}

⌨️ 快捷键说明

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