السلام عليكم ورحمة الله وبركاته
اتمنى من الجميع مساعدتي في ايجاد الكود البرمجي للدالة الاتية في الماتلاب
وهي
(mu1=mf_trap(x,[a1 b1 c1 d1],pf
هذه الدالة غير موجودة فى الماتلاب لانها دالة خاصة يعرفها من قام بعملها
شكرا على الرد السريع
انا اعرف انها دالة خارجية وغير موجودة ضمن الماتلاب
ولكني اتمنى ان يكون من يعرفها
تحياتي
وكيف سنعرف ماذا تقصد وهى دالة خارجية ممكن لمليون شخص ان يقوموا بعمل دالة مثلها او باى اسم اخر
اسماء الدوال الخاصة ليست مدلول على ما هية الدالة او محتواها وانما فقط تسمية لها والذى يعرف ما هى الدالة هو الشخص الوحيد الذى قام بعملها وسماها بهذا الاسم
ولكن لماذا تسال عن شيىء مبهم واين وجدت اسم هذه الدالة ؟؟
شكرا كثيرا على التواصل الاكثر من رائع
الدالة موجودة ضمن برنامج تدريب الشبكات العصبية المضببة ANFIS
وانا احتاج هذا البرنامج كثيرا
وقطعا البرنامج لايمكن ان يعمل بدون هذه الدالة
وهذا هو البرنامج
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% ANFISTRN: %
%% This script demonstrates the use of the ANFIS hybrid %
%% training algorithm to optimize the antecedent and function %
%% parameters of a first-order Sugeno fuzzy system. %
%% %
%% %
%% Mark Buckner and Wes Hines %
%% Copyright 1997 %
%% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc,clf
% Create training data
x=[-10:1:10];
y_rp=.05*x.^3-.02*x.^2-.3*x+20;
num_pts=size(x,2); % number of input patterns
figure(1);
subplot(2,1,1)
plot(x,y_rp);
xlabel('Input','fontsize',10);
ylabel('Output','fontsize',10);
text(-1,110,'Function','fontsize',10);
% Initialize Antecedent Parameters For Trapazoidal MFs 1, 2, and 3
% a=lower left point, b=upper left point, c=upper right point, d=lower right point
pf='n'; % Don't plot
a1=-20; b1=-8; c1=-5; d1=0;
a2=-8; b2=-2; c2=2; d2=8;
a3=-1; b3=4; c3=8; d3=20;
% Set Training Parameters
maxcycles=40; % maximum number of epochs for training
SSE_goal=1; % SSE error goal
SSE=zeros(1,maxcycles);
% Set Antecedent Parameter Learing Rates
lr_a=.3; lr_b=.5; lr_c=.5; lr_d=.3;
% Train the ANFIS
for i=1:maxcycles
% LAYER 1: Calculate MF values
mu1=mf_trap(x,[a1 b1 c1 d1],pf);
mu2=mf_trap(x,[a2 b2 c2 d2],pf);
mu3=mf_trap(x,[a3 b3 c3 d3],pf);
% LAYER 2: Calculates the rule firing strengths
w1=mu1; % rule 1
w2=mu2; % rule 2
w3=mu3; % rule 3
% LAYER 3: Determine normalized firing strengths for rules (nw)
sum_w=sum([w1; w2; w3]);
wb1=w1./sum_w;
wb2=w2./sum_w;
wb3=w3./sum_w;
% Solve for the consequent parameters using a Least Squares Algorithm.
X_inner=[wb1.*x;wb2.*x;wb3.*x;wb1;wb2;wb3];
if (rem(i,10)==0)|i==1
C_parms=pinv(X_inner')*y_rp'; % [p1; p2; p3; r1; r2; r3]
p1=C_parms(1);
p2=C_parms(2);
p3=C_parms(3);
r1=C_parms(4);
r2=C_parms(5);
r3=C_parms(6);
end
% LAYERS 4 and 5
% Calculate outputs using new consequent parameters
y=C_parms'*X_inner;
% Calculate error and SSE
e=y-y_rp; % Output Error
SSE(i)=sum(sum(e.^2)); % SSE
if SSE(i) SSE_goal; break;end % check against error goal
fprintf('Training epoch %i SSE = %f
',i,SSE(i));
% Begin BACKWARD PASS, Gradient Descent part of hybrid learning rule
% Calculate partial derivatives per chain rule
% Derivative of error wrt to y (dE/dy) [1 by 21]
de_dy=e;
% Derivative of y wrt to y_i (dy/dyi) [1 by 1]
dy_dyi=1;
% Derivative of yi wrt normalized rules (dyi/dw) [1 by 21]
dy1_dw1=(p1*x+r1)-y/sum_w;
dy2_dw2=(p2*x+r2)-y/sum_w;
dy3_dw3=(p3*x+r3)-y/sum_w;
% Derivative of rules wrt MFs (dw/dmu) [1 by 1]
dw_dmu=1;
% Derivative of MFs wrt to parameters a, b, c, d (dmu/dp)
dmu1=dmf_trap(x,[a1 b1 c1 d1],pf);
dmu_a1=dmu1(:,1);
dmu_b1=dmu1(:,2);
dmu_c1=dmu1(:,3);
dmu_d1=dmu1(:,4);
dmu2=dmf_trap(x,[a2 b2 c2 d2],pf);
dmu_a2=dmu2(:,1);
dmu_b2=dmu2(:,2);
dmu_c2=dmu2(:,3);
dmu_d2=dmu2(:,4);
dmu3=dmf_trap(x,[a3 b3 c3 d3],pf);
dmu_a3=dmu3(:,1);
dmu_b3=dmu3(:,2);
dmu_c3=dmu3(:,3);
dmu_d3=dmu3(:,4);
% Calculate the gradient vectors
delta_a1=de_dy.*dy1_dw1.*dmu_a1';
delta_b1=de_dy.*dy1_dw1.*dmu_b1';
delta_c1=de_dy.*dy1_dw1.*dmu_c1';
delta_d1=de_dy.*dy1_dw1.*dmu_c1';
delta_a2=de_dy.*dy2_dw2.*dmu_a2';
delta_b2=de_dy.*dy2_dw2.*dmu_b2';
delta_c2=de_dy.*dy2_dw2.*dmu_c2';
delta_d2=de_dy.*dy2_dw2.*dmu_d2';
delta_a3=de_dy.*dy3_dw3.*dmu_a3';
delta_b3=de_dy.*dy3_dw3.*dmu_b3';
delta_c3=de_dy.*dy3_dw3.*dmu_c3';
delta_d3=de_dy.*dy3_dw3.*dmu_d3';
% Change in parameter values
del_a1=-((lr_a/(2*num_pts))*sum(delta_a1));
del_b1=-((lr_b/(2*num_pts))*sum(delta_b1));
del_c1=-((lr_c/(2*num_pts))*sum(delta_c1));
del_d1=-((lr_c/(2*num_pts))*sum(delta_d1));
del_a2=-((lr_a/(2*num_pts))*sum(delta_a2));
del_b2=-((lr_b/(2*num_pts))*sum(delta_b2));
del_c2=-((lr_c/(2*num_pts))*sum(delta_c2));
del_d2=-((lr_c/(2*num_pts))*sum(delta_d2));
del_a3=-((lr_a/(2*num_pts))*sum(delta_a3));
del_b3=-((lr_b/(2*num_pts))*sum(delta_b3));
del_c3=-((lr_c/(2*num_pts))*sum(delta_c3));
del_d3=-((lr_d/(2*num_pts))*sum(delta_d3));
% Update the parameters
a1=a1+del_a1;
b1=b1+del_b1;
c1=c1+del_c1;
d1=d1+del_d1;
a2=a2+del_a2;
b2=b2+del_b2;
c2=c2+del_c2;
d2=d2+del_d2;
a3=a3+del_a3;
b3=b3+del_b3;
c3=c3+del_c3;
d3=d3+del_d3;
% Update plots
if rem(i,10)==0
figure(1)
subplot(2,1,1)
plot(x,y_rp,'+',x,y);
xlabel('Input','fontsize',10);
ylabel('Output','fontsize',10);
text(-1,110,'Function','fontsize',10);
text(-9, 110, ['Epoch ' num2str(i)],'fontsize',10);
text(6, 110, ['SSE ' num2str(sum(e.^2))],'fontsize',10);
legend('Reference','Output')
subplot(2,1,2)
plot(x,mu1,x,mu2,x,mu3);
axis([-inf inf 0 1.2]);
xlabel('Input','fontsize',10)
ylabel('Membership','fontsize',10)
text(-9, .7, 'MF1','fontsize',10);
text(-1, .7, 'MF2','fontsize',10);
text(8, .7, 'MF3','fontsize',10);
end
end
% Plot SSE data
SSE=nonzeros(SSE);
figure(2);
semilogy(SSE);
title('Training Record SSE')
xlabel('Epochs');
ylabel('SSE');
grid;
اسف لظهور البرنامج بالشكل الذي ظهر به ولكني لم اعرف كيف اجعله كمرفق مع الرد
تحياتي
من المكان الذى اتيت به بهذه الدالة اكيد ستجد الدوال الاخرى الخاصة بها
هذه الدالة موجود فى السى دى الملحق بالكتاب [B]Fuzzy and Neural Approaches in Engineering with MATLAB Supplement
[/b]
اشكركم كثيرا على هذا التعاون
الكتاب حصلت عليه من الانترنت ولكن كيف احصل على السي دي الخاص به لان الكتاب لايحوي هذه الدالة
اعرف اني الححت كثيرا ولكنكم اوصلتموني الي منتصف الطريق تقريبا فاتمنى ان تتموا المسالة معي
شكرا مرة اخرى
ودمتم في امان الله وحفظه
سأحاول أبحث لك عن السى دى الخاص بالكتاب
الملف كامل بالمرفقات به كل الدوال التى تحتاجها
شكرا كثيرا لكم
بارك الله فيكم وجزاكم الله خيرا على مساعدتكم
عسى الله يبارك فيكم ويجل ذلك في ميزان حسناتكم
دمتم في امان الله
هل بالامكان ان احصل على دالة anfismex وهي دالة في الماتلاب
دالة anfismex
دالة ضمن الماتلاب لكن عند فتحها لايظهر شيء يمكن التعديل عليه
علما انها موجودة ضمن دالة anfis في الماتلاب
اتمنى ان يساعدني احدكم
شكرا لكم
دوال الموجود فى الماتلاب يمكن استخدامها مباشرة
function anfismex
%ANFISMEX Core MEX function for ANFIS.
% This is the core MEX function for ANFIS. Do not use this function
% directly, use ANFIS instead. ANFIS provides a consistent and complete
% gateway to ANFISMEX.
%
% See also ANFIS.
% Roger Jang, 1-20-95
% Copyright 1994-2002 The MathWorks, Inc.
% $Revision: 1.10 $ $Date: 2002/04/14 22:21:43 $
هذه هي الدالة عند فتحها لايمكن التعديل عليها
انا احتاجها لكي اعدل عليها وليس لاستخدامها مباشرة
وكان هناك شيء مخفي
شكرا
طبعا الدوال فى الماتلاب تكون محمية ولكن يمكنك نسخها ووضعها فى ملف جديد او تغيير اسمها واعادة استخدامها وتعديلها كما تريد
شكرا جزيلا وبارك الله فيكم
الله يعين شكل البرنامج غثيث بس شكلنا مجبرين نتعلمه
أكيد طبعا هذا برنامج الماتلاب مهم جدا لجميع المهندسين
سأحاول التعلم عليه من خلال مقاطع اليوتيوب مالي غيرهااا