2013-07-18 4 views
0

초보자입니다. matlab에 행렬이 있고 행렬의 숫자를 퍼지 숫자로 변환하고이 퍼지 숫자를 함수의 입력에 사용합니다. 어떻게하면됩니까? 이 숫자를 1000으로 나누면 0,1 사이의 숫자를 이중 숫자로 변환하는 것이 맞습니까? [256,12; 3,56] ---> [0.256,0.12; 0.003,0.056]퍼지 데이터로 데이터 변환

하지만 이중 번호의 경우 어떻게해야합니까?

+0

를 생성, 난 당신이'퍼지 숫자가 의미 정확히 알고 있다고 생각하지 않습니다 '. 당신은 당신의 스펙을보고 당신이 필요로하는 것을 정확히 찾아 내야합니다. 그러면 코드 작성을 시작할 수 있습니다. –

답변

1

퍼지 숫자로 무엇을 의미합니까? !! 내가 아는 한 MATLAB은 Fuzzy 시스템에 일반 숫자를 사용합니다. 그 후에 실제 숫자를 멤버십 함수의 포인트로 변경하는 퍼지 화자가 있습니다. 그런 다음 퍼지 논리가 번호를 선택해야하는 방식 등을 결정합니다 ...! 반면에 숫자의 배율을 [-1 1] 또는 [0 1] 범위로 변경하려면 퍼지와 아무런 관련이 없습니다.

및 [AB]의 범위 [0 1]로 변경 코드 줄 사용

r = a + (b-a)*z; 

는 z의 범위는 [0 1]이며, 상기 r은 범위 인 [AB] 예

은 범위 [0 1]에서 Z = 0.5을 변경 [0 10], R이된다 :

r = 0 + (10-0)*0.5 = 5 

당신과 같은 [0 1] 내지 [AB]로 변경 이것을 할 수 있습니다 :

z = (r - a)/(b-a); 

그래서 [0 10] 범위의 r = 5이면 [0 1] 범위의 z = 0.5;

또한, 실제 퍼지 작동을 위해, 다음과 같은 것을 시도 :

point_n = 101;   % Determines MF's resolution 

min_x = -20; max_x = 20; % Universe is [min_x, max_x] 

x = linspace(min_x, max_x, point_n)'; 

A = trapmf(x, [-10 -2 1 3]); % Trapezoidal fuzzy set A 
B = gaussmf(x, [2 5]);  % Gaussian fuzzy set B 

C1 = fuzarith(x, A, B, 'sum'); 

subplot(2,1,1); 
plot(x, A, 'b--', x, B, 'm:', x, C1, 'c'); 
title('fuzzy addition A+B'); 

C2 = fuzarith(x, A, B, 'sub'); 
subplot(2,1,2); 
plot(x, A, 'b--', x, B, 'm:', x, C2, 'c'); 
title('fuzzy subtraction A-B'); 

C3 = fuzarith(x, A, B, 'prod'); 

은 당신이 퍼지 연산을 수행하는 방법입니다. C = fuzarith (X, A, B, operator)는 간격 계산을 사용하여 문자열에 의해 표현 된 함수를 적용한 결과로 퍼지 집합 C를 반환합니다. A와 B의 요소는 표본화 된 우주의 볼록 함수로부터 유도됩니다. X :

  1. A, B 및 X는 동일한 차원의 벡터입니다.
  2. 연산자는 'sum', 'sub', 'prod'및 'div'문자열 중 하나입니다.
  3. 반환 퍼지 집합 C가 X.

동일한 길이를 갖는 열 벡터이며, 마지막으로는 MATLAB에서 'evalfis'함수를 이용하여 퍼지 추론 연산을 수행 할 수있다. 이 함수의 입력과 출력뿐만 아니라 실수 있습니다

fismat = readfis('tipper'); 
out = evalfis([2 1; 4 9],fismat) 

이 구문은 질문의 응답

out = 
    7.0169 
    19.6810 
+0

매트릭스에서 데이터로 퍼지 셀룰러 오토마타를 만들고 퍼지 규칙 (퍼지 연산자 (And, OR)을 기반으로 함)을 사용하고 싶습니다.이 때문에 데이터를 변경하고 싶습니다. –

관련 문제