使用matlab底层文件实现模糊控制算法转载Word文档格式.docx

上传人:b****6 文档编号:16737879 上传时间:2022-11-25 格式:DOCX 页数:16 大小:98.31KB
下载 相关 举报
使用matlab底层文件实现模糊控制算法转载Word文档格式.docx_第1页
第1页 / 共16页
使用matlab底层文件实现模糊控制算法转载Word文档格式.docx_第2页
第2页 / 共16页
使用matlab底层文件实现模糊控制算法转载Word文档格式.docx_第3页
第3页 / 共16页
使用matlab底层文件实现模糊控制算法转载Word文档格式.docx_第4页
第4页 / 共16页
使用matlab底层文件实现模糊控制算法转载Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

使用matlab底层文件实现模糊控制算法转载Word文档格式.docx

《使用matlab底层文件实现模糊控制算法转载Word文档格式.docx》由会员分享,可在线阅读,更多相关《使用matlab底层文件实现模糊控制算法转载Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

使用matlab底层文件实现模糊控制算法转载Word文档格式.docx

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

/*

Stand-alone 

codes 

for 

fuzzy 

inference 

systems.

J.-S. 

Roger 

Jang, 

1994.

Copyright 

1994-2002 

The 

MathWorks, 

Inc.

$Revision:

1.12 

$Date:

2002/06/17 

12:

47:

24 

$

*/

/* 

This 

part 

is 

MACs 

only 

#if 

defined(applec) 

|| 

defined(__MWERKS__) 

defined 

(THINK_C) 

defined(powerc)

#include 

<

stdio.h>

stdarg.h>

FILE 

*output_file;

#define 

PRINTF 

macprintf

int 

macprintf(char* 

format, 

...) 

{

va_list 

arg;

ret;

va_start(arg, 

format);

ret 

vfprintf(output_file, 

arg);

va_end(arg);

return(ret);

}

#endif 

applec 

__MWERKS__ 

THINK_C 

powerc 

Start 

of 

the 

regular 

fismain.c 

这里要改,当然include还是展开,但是我们把它放在vs2008里面,方便管理,还是用.h头文件吧。

"

fis.c"

/***********************************************************************

Main 

routine 

**********************************************************************/

int

main(int 

argc, 

char 

**argv)

FIS 

*fis;

i, 

j;

debug 

0;

DOUBLE 

**dataMatrix, 

**fisMatrix, 

**outputMatrix;

*fis_file, 

*data_file;

data_row_n, 

data_col_n, 

fis_row_n, 

fis_col_n;

这里也要改,读取我们的配置文件——FLC有很多需要选择的参数以及方法 

For 

data_file 

fismain.in"

;

fis_file 

fismain.fis"

output_file 

fisOpenFile("

fismain.out"

"

w"

);

#else

input 

arguments 

checking 

if 

(argc 

!

3) 

PRINTF("

Usage:

%s 

fis_file\n"

 

argv[0]);

exit

(1);

argv[1];

argv[2];

obtain 

data 

matrix 

and 

dataMatrix 

returnDataMatrix(data_file, 

&

data_col_n);

fisMatrix 

returnFismatrix(fis_file, 

fis_col_n);

build 

structure 

fis 

(FIS 

*)fisCalloc(1, 

sizeof(FIS));

fisBuildFisNode(fis, 

fisMatrix, 

fis_col_n, 

MF_POINT_N);

error 

(data_col_n 

fis->

in_n) 

Given 

%d-input 

%d-output 

system.\n"

in_n, 

out_n);

file 

does 

not 

have 

enough 

entries.\n"

fisFreeMatrix((void 

**)dataMatrix, 

data_row_n);

**)fisMatrix, 

fis_row_n);

fisFreeFisNode(fis);

fisError("

Exiting 

..."

debugging 

(debug)

fisPrintData(fis);

create 

output 

outputMatrix 

(DOUBLE 

**)fisCreateMatrix(data_row_n, 

out_n, 

sizeof(DOUBLE));

evaluate 

on 

each 

vector 

(i 

data_row_n;

i++)

getFisOutput(dataMatrix[i], 

fis, 

outputMatrix[i]);

print 

i++) 

(j 

out_n;

j++)

%.12f 

outputMatrix[i][j]);

\n"

clean 

up 

memory 

**)outputMatrix, 

exit(0);

大致需要改的,就是所指出来得两部分。

很简单的,直接看修改后的代码。

Step3.修改

修改后的main.c 

main.c 

fis.h"

1;

double 

dataMatrixFile.txt"

fisMatrixFile.txt"

从文件读入输入数据矩阵和模糊矩阵,将其放入二维矩阵中*/

建立模糊数据结构*/

/*将fisMatrix中的数据导入到fis中*/

错误检测*/

printf("

fisDebugging 

调试数据输出*/

创建输出矩阵5x1*/

(double 

sizeof(double));

获取输入->

开始模糊推理->

输出矩阵*/

得到输出并打印*/

清理内存*/

getchar();

return 

当然还有我们的fis.h

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

#ifndef 

__FIS_H__

define 

stdlib.h>

string.h>

math.h>

Macros 

definitions

Define 

portable 

printf 

defined(MATLAB_MEX_FILE)

mexPrintf

real_T

#elif 

defined(__SIMSTRUC__)

ssPrintf

printf

double

#endif

ABS

ABS(x) 

( 

(x) 

>

(0) 

?

(x):

(-(x)) 

MAX

MAX(x,y) 

(y) 

:

MIN

MIN(x,y) 

MF_PARA_N 

STR_LEN 

500

MF_POINT_N 

macros 

PRINT(expr) 

printf(#expr 

%g\n"

(DOUBLE)expr)

PRINTMAT(mat,m,n) 

printf(#mat 

fisPrintMatrix(mat,m,n)

FREEMAT(mat,m) 

Free 

#mat 

...\n"

fisFreeMatrix(mat,m)

FREEARRAY(array) 

#array 

free(array)

(defined(MATLAB_MEX_FILE) 

defined(__SIMSTRUC__))

FREE 

mxFree

free

FREE(array)

Data 

types

typedef 

struct 

fis_node 

handle;

load_param;

name[STR_LEN];

type[STR_LEN];

andMethod[STR_LEN];

orMethod[STR_LEN];

impMethod[STR_LEN];

aggMethod[STR_LEN];

defuzzMethod[STR_LEN];

userDefinedAnd;

userDefinedOr;

userDefinedImp;

userDefinedAgg;

userDefinedDefuzz;

in_n;

rule_n;

**rule_list;

*rule_weight;

*and_or;

AND-OR 

indicator 

*firing_strength;

*rule_output;

Sugeno:

rules 

Mamdani:

constrained 

MF 

values 

io_node 

**input;

**output;

(*andFcn)(DOUBLE, 

DOUBL

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1