
نوشته شده توسط
coronaa
خب میخوام کلاس بندی کنم دیگه!
یه سری اعداد، توی دو گروه قرار بگیرن. مثل همون برنامه ی چند پست قبل ولی بصورت فازی.
مثلن انگار 20 تا دانشجو داری که رنج نمرات اونها بین صفر تا 100 هست. حالا میخوایم با فازی مشخص کنیم که اونهایی که زیر 50 هستن گروه 1 و اونهایی که بالای 50 هستن گروه 2 قرار بگیرن. فقط با این تفاوت که فازی میتونه نمره 48 یا 49 رو هم توی گروه 2 قرار بده تا مثلن مردود نشدن!
منظورم رو فهمیدین؟
توی اکتاو میشه اینجور نوشت. نمیدونم منظورتون همینه یا نه
p=1:100;
a = newfis ('sefroyek', 'sugeno', ...
'algebraic_product', 'algebraic_sum', ...
'min', 'max', 'wtaver');
a = addvar (a, 'input', 'P', [min(p) max(p)]);
a = addmf (a, 'input', 1, 'Low', 'trapmf', [min(p)-1 min(p) range(p)*0.45+min(p) range(p)*0.55+min(p)]);
a = addmf (a, 'input', 1, 'High', 'trapmf', [range(p)*0.45+min(p) range(p)*0.55+min(p) max(p) max(p)+1]);
a = addvar (a, 'output', 'sefroyek', [0 1]);
a = addmf (a, 'output', 1, 'Low', 'constant', 0);
a = addmf (a, 'output', 1, 'High', 'constant',1);
a = addrule (a, [1 1 1 1;2 2 1 1]);
evalfis([48],a);