دالة ماتلاب

السلام عليكم ورحمة الله وبركاته
اتمنى من الجميع مساعدتي في ايجاد الكود البرمجي للدالة الاتية في الماتلاب
وهي
(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 $
هذه هي الدالة عند فتحها لايمكن التعديل عليها
انا احتاجها لكي اعدل عليها وليس لاستخدامها مباشرة
وكان هناك شيء مخفي
شكرا

طبعا الدوال فى الماتلاب تكون محمية ولكن يمكنك نسخها ووضعها فى ملف جديد او تغيير اسمها واعادة استخدامها وتعديلها كما تريد

شكرا جزيلا وبارك الله فيكم

الله يعين شكل البرنامج غثيث بس شكلنا مجبرين نتعلمه

أكيد طبعا هذا برنامج الماتلاب مهم جدا لجميع المهندسين

سأحاول التعلم عليه من خلال مقاطع اليوتيوب مالي غيرهااا