خطايابي برنامه‌ها در متلب MATLAB

شما مي توانيد از راههاي زير، برنامه‌هايتان را خطايابي (debugging) نمائيد:
برنامه را به چند بخش كوتاهتر تقسيم كنيد و هر بخش را جداگانه امتحان كنيد.
– نتايج محاسبات را در مراحل مياني جريان برنامه بنويسيد. اين كار را مي توانيــد بـه آسـاني بـا برداشتن semicolon (;) از انتهاي دستور محاسباتي ويا نوشتن نام متغير مورد نظر انجام دهيد. همچنين مي توانيد با قرار دادن disp در مكانهاي مشخصي از برنامه دريابيد كه برنامه تــا كجـابه پيش رفته است.
– تا حد امكان سعي كنيد كه از عمليات ماتريسي استفاده كنيد و در برنامه از تعداد حلقــه هـايي كه همان كار را انجام مي دهند بكاهيد.
– خطوط مورد شك برنامه را بطور جداگانه در محيط كار MATLAB اجــرا كنيـد (ترجيحـا” بـه كمك copy-paste) تا درستي و يا نادرستي محاسبه را دريابيد.
– دقت كنيد كه پيغام خطا روي چه سطري از برنامه داده شده است و بويژه دقت كنيد كه پيغــام خطا چه مي باشد و چه معنايي دارد.
– امكانات خطايابي موجود در نرم افزار را به كمك بگيريد.

پيغامهاي خطا
بيشترين حجم پيغامهاي خطايي كه شما در ابتداي كار با MATLAB دريافت مي كنيد مربوط بــه عمليات و جايگزيني‌هاي برداري/ماتريسي است. در اين بخش نحوه تصحيح برنامه را با اســتفاده از پيغامهاي خطاي دريافتي با ذكر يك مثال نشان داده مي شود.

در نظر بگيريد كه مي خواهيد سطح PVT را بر اســاس قـانون گـاز كـامل رسـم كنـيد. داده هـاي ورودي به برنامه محدوده‌هاي فشار و دما به صورت برداري هستند و برنامه بايد حجـم ويـژه گـاز را محاسبه نمايد و سپس سطح را رسم كند. بهتر است كه محاسبه حجم در يك تابع جداگان ه انجـام گيرد تا اگر بخواهيد محاسبه را با معادله حالت ديگري نيز تكــرار كنيـد، نيـازي بـه نوشـتن مجـدد برنامه اصلي نداشته باشيد و فقط تابع محاسبه حجم را تغيير دهيد. فرض كنيد كه برنامه اصلـي و تابع مورد نياز را در وهله اول به صورت زير ايجاد كرده ايد:

برنامه اصلي (main.m)
% Input p = input(‘ Pressure (bar) = ‘);

t = input(‘ Temperature (K) = ‘);
% Calculation

v = ideal(t,p*1e5);

% Plotting results

surf(p,vol,t)

(ideal.m) تابع
function v = ideal(t,p)
R = 8314; % Gas constant (J/kmol.K)

v = R*t/p; % Ideal gas law

حال در صورتي كه اين برنامه را اجرا كنيد، پيغام خطاي زير را دريافت مي كنيد:

» main

 Pressure (bar) = [1:10]

 Temperature (K) = 300:5:400

??? Error using ==> /

Matrix dimensions must agree.

Error in ==> C:\MATLABR11\work\ideal.m

On line 4  ==> v = R*t/p;                                % Ideal gas law

Error in ==> C:\MATLABR11\work\main.m

On line 6  ==> v = ideal(t,p*1e5);

 همانطور كه ملاحظه مي كنيد اشكال از سطر ٦ برنامه اصلي كه مربوط بــه مراجعـه بـه تـابع اسـت گرفته شده و در حقيقت خطا در سطر ٤ تابع و مشخصا” در نحوه تقسيم دو بردار t و p وجــود دارد.  به ياد بياوريد كه در عمليات ماتريسي، ابعاد ماتريسها بايد اجازه انجــام چنيـن عملـي را بدهـد.  در اينجا با دو بردار t و p نمي توان عمل تقسيم را انجام داد و اصولا” در اين مس ئله مقصـود از عبـارت بكار برده شده براي محاسبه حجم گاز كامل انجام محاسبه ماتريسي نمي باشــد.  بنـابراين سـطر ٤ تابع ideal.m به شكل زير تغيير داده مي شود (بكار بردن تقسيم عضو به عضو بجـاي ماتريسـي) تـا محاسبه حجم به صورت ماتريسي صورت نگيرد :

function v = ideal(t,p)

R = 8314; % Gas constant (J/kmol.K)

v = R*t./p; % Ideal gas law

اما با اجراي مجدد برنامه مي بينيد كه مشكل حل نشده است:

» main

 Pressure (bar) = [1:10]

 Temperature (K) = 300:5:400

??? Error using ==> ./

Matrix dimensions must agree.

Error in ==> C:\MATLABR11\work\ideal.m

On line 4  ==> v = R*t./p;                               % Ideal gas law

Error in ==> C:\MATLABR11\work\main.m

On line 6  ==> v = ideal(t,p*1e5);

 اگر تعداد مولفه‌هاي بردارهاي t و p را در محيط كار MATLAB بخواهيم:

» length(p) ans =

    10

» length(t) ans =

    21

 ديده مي شود كه اين دو بردار هم اندازه نيستند و بنابراين عمليات عضو به عضو نيز نمــي تـوان بـر روي آن دو انجام داد.  در اينجا چاره اي نيست جز آنكه از يك حلقه در محاسبات استفاده نمـائيد و مقادير حجم ويژه را بر حسب دما، هر بار در يك فشار معين، محاسبه نمائيد:

function v = ideal(t,p)

R = 8314; % Gas constant (J/kmol.K)

for k = 1:length(p)

   v(:,k) = R*t/p(k);   % Ideal gas law

end

اما اين بار نيز با پيغام خطا مواجه مي شويد:

» main

 Pressure (bar) = [1:10]

 Temperature (K) = 300:5:400

???  In an assignment  A(:,matrix) = B, the number of elements in the subscript of A and the number of columns in B must be the same.

Error in ==> C:\MATLABR11\work\ideal.m

On line 5  ==>    v(:,k) = R*t/p(k);                              % Ideal gas law

Error in ==> C:\MATLABR11\work\main.m

On line 6  ==> v = ideal(t,p*1e5);

 توجه كنيد كه بردار دما يك بردار سطري است و در نتيجه سمت راست عبارت محاسبه حجم يــك بردار سطري خواهد بود.  اين در حالي است كه در سمت چپ همان عبارت يك بردار ســتوني قـرار دارد و پيغام خطا نيز از همينجا ناشي مي شود.  بنابراين تابع ideal.m بايد ب ه شـكل زيـر تصحيـح گردد:

function v = ideal(t,p)

R = 8314; % Gas constant (J/kmol.K)

for k = 1:length(p)   

    v(k,:) = R*t/p(k); % Ideal gas law

end

اين بار با اجرا كردن برنامه اصلي پيغام زير را مشاهده مي كنيد:

» main  Pressure (bar) = [1:10]  Temperature (K) = 300:5:400

??? Undefined function or variable ‘vol’.

Error in ==> C:\MATLABR11\work\main.m

On line 9  ==> surf(p,vol,t)

 

باز هم پيغام خطا!  اما اگر دقت كنيد مي بينيد كه اين بار پيغام خطا مربوط به تابع ideal.m نيست بلكه خطا از دستور مربوط به رسم داده‌ها گرفته شده است.  در حقيقت تابع كار خود را بــه خوبـي انجام داده و رفع اشكال شده است.  خطاي اين دفعه مربوط به اشتباه در نام متغير اسـت.  متغـير v كه قبلا” تعريف شده است اشتباها” در دستور surf با نام vol بكار برده شده اســت.  ولـي vol قبـلا” تعريف نشده است و در نتيجه MATLAB آن را نمي شناسد.  پ س از تصحيـح ايـن سـطر، برنامـه اصلي به صورت زير خواهد بود:

% Input p = input(‘ Pressure (bar) = ‘); t = input(‘ Temperature (K) = ‘);

% Calculation v = ideal(t,p*1e5); % Plotting results surf(p,v,t)  

:اجراي اين برنامه پيغام زير را به دنبال خواهد داشت

» main  Pressure (bar) = [1:10]

 Temperature (K) = 300:5:400

??? Error using ==> surface Matrix dimensions must agree.

Error in ==> C:\MATLABR11\toolbox\matlab\graph3d\surf.m

On line 59  ==>     hh = surface(varargin{:}); Error in ==> C:\MATLABR11\work\main.m

On line 9  ==> surf(p,v,t)

 

خطاي اين دفعه باز هم مربوط به دستور surf و اين بار در باره نحوه معرفي آرايه‌ها به آن است.  بـا مراجعه به توضيحات (help) اين دستـور مشخص مي گردد كه آرگومان‌هاي اول و دوم ايـن دسـتور مي توانند بردار باشند ولي آرگومان سـوم بايد ماتريس باشد.  در اين حالت طول آرگومانــهاي اول و دوم بايد به ترتيب برابر با تعداد ستونها و سطرهاي آرگومان سوم باشد.  لــذا طبـق ايـن توضيحـات متغير v بايد آرگومان سوم دستور surf باشد و ضمنا” با مشاهده ابعاد اين متغير:

» size(v) ans =

    10    21

 مي توانيد بگوئيد كه آرگومان اول بايد بردار t و آرگومان دوم بــايد بـردار p باشـد.  بنـابراين برنامـه اصلي بايد به شكل زير اصلاح گردد:

% Input

p = input(‘ Pressure (bar) = ‘);

t = input(‘ Temperature (K) = ‘);

% Calculation v = ideal(t,p*1e5);

% Plotting results

surf(t,p,v)

xlabel(‘T (K)’)

ylabel(‘P (bar)’)

zlabel(‘V (m^3/kmol)’)

view(135,30)

در صورت اجراي برنامه نتيجه نهايي را خواهيد ديد.

» main

 Pressure (bar) = [1:10]

 Temperature (K) = 300:5:400

 

133 دیدگاه دربارهٔ «خطايابي برنامه‌ها در متلب MATLAB»

  1. سلام خسته نباشید
    برنامه ام خطایی با عنوان :
    Error using evalfismex
    Illegal parameters in fisGaussianMF() –> sigma =
    0

    Error in evalfis (line 84)
    [output,IRR,ORR,ARR] = evalfismex(input, fis,
    numofpoints);

    Error in ANFIS (line 32)
    TestOut=evalfis(rr,fis2);
    میده ک نمیدونم دلیل این خطا چیه
    میشه راهنماییم کنید؟
    ممنون میشم

    1. سلام

      اين خطا يكي از خطاهاي رايج در هنگام آموزش انفيس در متلب مي باشد.

      دليل آن اين است كه مقدار سيگما در تابع عضويت يا همان membership function نمي تواند صفر باشد.

      چون انفيس يك الگوريتم آموزش سيستم فازي تاكاگي سوگونو مي باشد لذا ممكن است اين حالت اتفاق بيافتد.

      خوب براي حل اين خطا چه كار بايد بكنيم :

      1 – نوع تابعي كه با آن سييتم فازي را ساختيد عوض كنيد مثلا genfis1 را يه genfis2 تغيير دهيد.
      اين خطا بيشتر در genfis1 اتفاق مي افتد

      2 – تعداد نمونه هاي آموزش را كاهش دهيد.

      3 – قبل از اعمال داده ها به انفيس آنها را نرماليزه كنيد. دستورهاي نرماليزه كردن mapminamx و mapstd مي باشند.

      4 – نوع تابع عضويت در سيستم فازي را تغيير دهيد مثلا گايوسين را به مثلثي تبديل كنيد.

      5- تعداد توابع عضويت در سيستم فازي را كاهش دهيد.

  2. سلام برنامه من در اجرای کددستور زیر این خطا را می دهد لطفا راهنمایی کنید
    ruleview(fis);
    Error using &
    Not enough input arguments.

    Error in evalfis (line 84)
    [output,IRR,ORR,ARR] = evalfismex(input, fis,
    numofpoints);

    Error in ruleview (line 451)
    [v,irr,orr,arr]=evalfis(inputVector,fis, numPts);

    Error in ruleview (line 313)
    ruleview #update

  3. سلام ممنون که وقت گذاشتید
    clc;
    clear;
    close all;

    %%creat fis
    fisName=’pr’;
    fisType=’mamdani’;
    andMethod=’min’;
    orMethod=’max’;
    impMethod=’and’;
    aggMethod=’max’;
    defuzzMethod=’bisector’;
    fis=newfis(fisName,fisType,andMethod,orMethod,impMethod, aggMethod,defuzzMethod) ;
    %%add var
    % fis=addvar(fis,’varType’,’varName’,varBounds)
    fis=addvar(fis,’input’,’distance’,[0 1.5]);
    fis=addmf(fis,’input’,1,’ld’,’trapmf’,[-inf -inf 0.25 0.5]);
    fis=addmf(fis,’input’,1,’ad’,’trapmf’,[0.25 0.5 0.75 1 ]);
    fis=addmf(fis,’input’,1,’gd’,’trapmf’,[0.75 1 inf inf]);

    fis=addvar(fis,’input’,’psc’,[0 1]);
    fis=addmf(fis,’input’,2,’wl’,’trapmf’,[-inf -inf 0.001 0.25]);
    fis=addmf(fis,’input’,2,’al’,’trapmf’,[0.001 0.25 0.5 0.75]);
    fis=addmf(fis,’input’,2,’sl’,’trapmf’,[0.5 0.75 inf inf]);

    fis=addvar(fis,’output’,’best ‘,[0 1]);
    fis=addmf(fis,’output’,1,’vb’,’trapmf’,[-inf -inf 0.1 0.25]);
    fis=addmf(fis,’output’,1,’bb’,’trimf’,[0.1 0.25 0.35]);
    fis=addmf(fis,’output’,1,’ab’,’trimf’,[0.25 0.35 0.55]);
    fis=addmf(fis,’output’,1,’gb’,’trimf’,[0.35 0.55 0.75]);
    fis=addmf(fis,’output’,1,’vg’,’trapmf’,[0.55 0.75 inf inf]);

    %add rules
    rules=[1 1 2 1 1
    1 2 4 1 1
    1 3 5 1 1
    2 1 1 1 1
    2 2 3 1 1
    2 3 4 1 1
    3 1 1 1 1
    3 2 2 1 1
    3 3 2 1 1];
    fis=addrule(fis,rules);

      1. سلام مممنون از پاسختون
        من هم با متلب 2012 اجرا می کنم خطا نداره،
        ولی وقتی دستور (ruleview(fis را میزنم خطای بالا را میدهد
        نمی دونم چرا ؟تمام وقتمم گرفته؟
        ایا شما هم این دستور را میزنید Rull ها را نشان میدهد یا همین خطا را دارید؟
        لطفا راهنمایی کنید

    1. سلام بله امکانش هست

      بعد از ساخت سیستم فازی اگر اسمش fis باشد

      کافی است بنویسید

      y =evalfis(fis,x)

      با این دستور شما ورودی x را به سیستم فازی می دهید و خروجی را در ماتریس y ذخیره می کنید.

  4. سلام
    ایا وروردی های دستور evalfis می تواند از دو ماتریس تشکیل شود؟یعنی به جای دادن عدد خاص می توان از اعدادی که قبلا در یک ارایه یا ماتریس ذخیره شده استفاده کرد؟
    متشکرم

    1. سلام

      بله شما می توانید یک بار یک ماتریس را بدبد و سپس ماتریس بعدی

      مثلا فرض کنید دو ماتریس داریم به اسم های a1 و a2

      y1=evalfis(fis,a1)

      y2=evalfis(fis,a2)

      فقط حواستون باشد اعداد ورودی در بازه تغییرات ورودیهای سیستم فازی باشد.

      شاد باشید

  5. چگونه می توان یک مربع با قطر ۵۰۰m در متلب طراحی کرد که دارای ۲۰ نود باشد؟طوری که نود منبع و مقصد در ابتدا و انتهای قطر قرار داشته باشند؟
    باتشکر

  6. سلام
    بله قرار یک شبکه مش با تعداد ۴۰ نود یا گره تشکیل بدهم، که در یک فضا با قطر 500m باشد که گره اول و آخر در دو سر قطر قرار داشته باشند وسایر نودها در همین محدوده پخش شوند .من نودها را روی صفحه قرار دادم ولی نتوانستم قطر را برایش تعریف کنم.
    با تشکر

    1. سلام

      من قسمتی از کد را که ارسال کرده بودید ،دیدم. اما مشکلی در کد ندیدم.
      تنها کمکی که من میتونم بکنم این است که شما برای مختصات هر نود یا گره یک شرط بگذار که اگر تو این شرط صدق کرد، نود تولیدی قبول بشه وگرنه نود دیگری تولید بشه. در اینصورت نودهای تولیدی در یک محدوده تولید می شوند.
      این کمکی بود که من میتونستم بکنم
      شاد باشید

  7. این قسمتی از کد که برای تولید گره ها استفاده کردم که در واقع گره ها را ایجاد می کند ولی قطر را نتوانستم تعریف کنم

    clear all;
    clc;
    close all;
    tic;
    global n distanc distance ncand ci psc i j k
    %axis on;
    axis off; %hazf mehvar mokhtasat
    x1=0.15;
    y1=0.15;
    figure(1);
    hold on ;
    box on;
    grid off;
    % box off;
    plot (x1 , y1 , ‘r:o’, ‘MarkerSize’,20);
    text(x1,y1,’S’);
    hold on;
    % matris distance
    %*b=zeros(1,100);
    %*d=repmat(b,1,100);
    %tedad node
    n=input(‘n=’);
    ncand=input(‘ncand=’);%max tedad candid
    a.x=zeros(1,n);
    a.y=zeros(1,n);
    %m matris mokhtasat
    m=repmat(a,1,n);
    m(1).x=0.15;
    m(1).y=0.15;
    rng( 5);%ran num sabet
    for i=2:n-1
    hold on;
    %* disp(‘*****************************************************************************’);
    %* fprintf(‘node i= %d \n’,i);

    xx=rand(1);yy=rand(1);

    m(i).x=xx;
    m(i).y=yy;

    %* disp(‘coordinate=’ ); disp (m(i));

    plot (xx,yy,’k:o’, ‘MarkerSize’, 20 );
    %lable node
    labels = cellstr( num2str((i)) );

    text(xx,yy, labels);

    hold on;
    end
    xn=0.95;
    m(n).x=0.95;
    m(n).y=0.95;
    yn=0.95;
    plot (xn, yn , ‘r:o’, ‘MarkerSize’,20);
    text(xn,yn,’d’);
    hold on;
    o=zeros(1,1);
    p=zeros(1,1);
    q=zeros(1,1);
    c=zeros(1,1);
    distance=repmat(p,100,n);%matris distance for node to node
    distanc=repmat(o,1,n);%matris distanc to destinection
    %*dist=repmat(q,1,n);
    count=repmat(c,1,n);%%%%%%counter tedad neighber every node
    for i=1:n-1
    x2=m(i).x;
    y2=m(i).y;

    dn=((x2 – xn) .^ 2 + (y2 -yn) .^ 2);
    %* disp(‘***************************’);
    %* fprintf(‘node i= %d \n’,i);

    hn=abs(sqrt(dn));
    %* fprintf(‘dist to dest= %f \n’,hn);
    digits(3);
    distanc(i)=hn;
    end
    % distance is matris fasele node to node
    %* disp(‘***************************’);
    l=zeros(1,1);
    sp=repmat(l,1,n);%successprob

    x2=zeros(1,1);
    psc=repmat(x2,100,n);%sort sp base ci
    for i=1:n

    for j=1:n
    % j=j+1;
    x2 = m(j).x;
    y2 = m(j).y;
    d=((m(i).x – x2) .^ 2 + (m(i).y -y2) .^ 2);
    % *disp(‘***************************’);
    %* fprintf(‘node i,j= %d \n’,i);

    h=abs(sqrt(d));
    %ta 3 ragham ashar
    digits(3);
    %* fprintf(‘dist to dest= %f \n’,h);
    distance(i,j)=h;

    1. قابل انجام است.
      برای مش بندی متلب ابزاری دارد به نام PDEtool

      که ما یک محصل در همین رابطه داریم. در این ابزار شما می توانید مش بندی را به راحتی انجام دهید.

      لینک محصول

  8. با سلام
    ایراد برنامه زیر کجاست که ران نمیشود.باتشکر از راهنمایی دوستان گرامی
    clc,clear,close all
    f1t=1080;
    f1c=620;
    f2t=39;
    f2c=128;
    f6=89;
    syms sx s1 s2 t6
    step=pi/6;

    for theta=0:step:pi/2;
    m=cos(theta);
    n=sin(theta);
    my_sys=[s1-m^2*sx,s2-n^2*sx,t6-m*n*sx,(1/f1t-1/f1c)*s1+(1/f2t-1/f2c)*s2+(1/(f1t*f1c))*s1^2+(1/(f2t*f2c))*s2^2+t6^2/f6^2-(1/(f1t*f1c*f2t*f2c)^0.5)*s1*s2-1];
    Resp=solve(my_sys);
    Maxsx(:,1+theta/step)=double(Resp.sx);
    end

    theta=(0:step:2*pi).*(180/pi); % Theta in Degree
    plot(theta,MaxSx),xlabel(‘Theta’),ylabel(‘Max Stress’)

    1. سلام

      شما آخر برنامه رسم نمودار گذاشتید
      plot(theta,Maxsx),
      اما طول دو بردار ورودی دستور plot برابر نیست.
      در ضمن Maxsx ماتریس بدست می آید.
      کدت را مرحله به مرحله اجرا کن.

      ایران متلب

  9. سلام برای نمایش trans در مطلب برنامم این ارور رو میده
    please error at ohm:usage might be invalid matlab syntax
    please error at’0.0090′:usage might be invalid matlab syntax

    این هم برنامه کامل اگه میشه کمکم کنید

    To obtain equivalent circuit from tests 1
    To input individual winding impedances 2
    To input transformer equivalent impedance 3
    To quit 0
    Select number of menu –> 2
    Enter Transformer rated power in kVA, S = 150
    Enter rated low voltage in volts = 240
    Enter rated high voltage in volts = 2400
    Enter LV winding series impedance R1+j*X1 in ohm=0.002+j*.0045
    Enter HV winding series impedance R2+j*X2 in ohm=0.2+j*0.45
    Enter ‘lv’ within quotes for low side shunt branch or
    enter ‘hv’ within quotes for high side shunt branch -> ‘hv’
    Shunt resistance in ohm (if neglected enter inf) = 1000
    Shunt reactance in ohm (if neglected enter inf) = 1500
    Shunt branch ref. to LV side Shunt branch ref. to HV side
    Rc = 10.000 ohm Rc = 1000.000 ohm
    Xm = 15.000 ohm Xm = 1500.000 ohm
    Series branch ref. to LV side Series branch ref.to HV side
    Ze = 0.0040 + j 0.0090 ohm Ze = 0.4000 + j 0.90 ohm
    Hit return to continue
    Enter load kVA, S2 = 150
    Enter load power factor, pf = 0.8
    Enter ‘lg’ within quotes for lagging pf
    or ‘ld’ within quotes for leading pf -> ‘lg’
    Enter load terminal voltage in volt, V2 = 240
    Secondary load voltage = 240.000 V
    Secondary load current = 625.000 A at -36.87 degrees
    Current ref. to primary = 62.500 A at -36.87 degrees
    Primary no-load current = 2.949 A at -33.69 degrees
    Primary input current = 65.445 A at -36.73 degrees
    Primary input voltage = 2453.933 V at 0.70 degrees
    Voltage regulation = 2.247 percent
    Transformer efficiency = 94.249 percent
    Maximum efficiency is 95.238 %occurs at 288 kVA with 0.8pf

  10. سلام
    رابطه بازگشتی زیر راچگونه می توان در متلب کد نویسی کرد من در قسمت بازگشتی رابطه بعد مساوی( EAX(ci,d مشکل دارم نمی توانم کد بازگشتی این قسمت بنویسم.

    (EAX(s,d)=Ʃ EAX(ci,d)pi Π(1-pj
    بازه سیگما (i=1 …c) وبازه Π برابر j=1 ..i-1
    در حالتی که i=1 عبارت Π(1-pj)=1 می باشد.

    لطفا راهنمایی کنید
    با تشکر

    1. سلام

      من نمیتونم دقیق کد را خدمتتون بگم فقط راهنمایی که میتونم بکنم این است که همیشه برای نوشتن هر رابطه بازگشتی دو چیز لازم است

      اول مقدار دهی اولیه متغییری که قرار است در فرایند مقداردهی شود

      دوم استفاده از یک حلقه FOR برای نوشتن فرایند

      خوب شما بیا اول
      Π(1-pj)=1
      بگذار
      سسپس یک حلقه FOR بنویس
      برای نوشتن حاصلضرب چندین (Π) عدد در هم از دستور prod استفاده کن.

      1. سلام من هر چه کد می نویسم بازم خطا داره لطفا راهنمایی کنید خیلی ضروری است

        function e=followeax(c,d)
        global n distanc distance ncand ci psc sp maxCandidateset res zzz c
        %%%%% eax 1)

        for i=2:zzz(k)
        for j=1:i-1

        mult1=1;
        EE=mult1*(1-sp(1,j));
        end
        % rr= maxCandidateset(1,i);
        % eax=1+(followeax(maxCandidateset(i,1),n))*sp(i,1)*EE ;

        rr= maxCandidateset(1,i);
        eax=1+followeax(rr,n)*sp(rr,i)*EE ;
        end
        end

        end

        %h=maxCandidateset(c,1);
        % eax= 1+followeax(h,n)*sp(c,1);

        مرتب خطا میدهد
        با تشکر

  11. این خطا را می دهد
    Output argument “e” (and maybe others) not assigned
    during call to “D:\ms
    hoosh\term2\tez1\followeax.m>followeax”.

    Error in followeax (line 9)
    eax=1+followeax(rr,n)*psc(rr,i);

  12. function e=followeax(c,n)
    global n psc sp maxCandidateset zzz eax rr d
    %%%%% eax 0)

    %if(zzz(rr) > 1)

    % for i=2:zzz(k)
    for j=1:i-1

    mult1=1;
    EE=mult1*(1-psc(1,j));
    end
    % rr= maxCandidateset(1,i);
    % eax=1+(followeax(maxCandidateset(i,1),n))*sp(i,1)*EE ;

    rr= maxCandidateset(rr,i);
    eax=eax+1+followeax(rr,d)*psc(rr,i)*EE ;
    end
    end
    end

    %end

    %h=maxCandidateset(c,1);
    % eax= 1+followeax(h,n)*sp(c,1);
    با این کد نیز خطا می دهد

    In followeax (line 11)
    eax=eax+1+followeax(rr,d)*psc(rr,i);
    هر چه دقت می کنم نمی دونم بابت چیه؟

  13. سلام شما یکبار تست کنید برنامه رو متوجه خواهید شد

    To obtain equivalent circuit from tests 1
    To input individual winding impedances 2
    To input transformer equivalent impedance 3
    To quit 0
    Select number of menu –> 2
    Enter Transformer rated power in kVA, S = 150
    Enter rated low voltage in volts = 240
    Enter rated high voltage in volts = 2400
    Enter LV winding series impedance R1+j*X1 in ohm=0.002+j*.0045
    Enter HV winding series impedance R2+j*X2 in ohm=0.2+j*0.45
    Enter ‘lv’ within quotes for low side shunt branch or
    enter ‘hv’ within quotes for high side shunt branch -> ‘hv’
    Shunt resistance in ohm (if neglected enter inf) = 1000
    Shunt reactance in ohm (if neglected enter inf) = 1500
    Shunt branch ref. to LV side Shunt branch ref. to HV side
    Rc = 10.000 ohm Rc = 1000.000 ohm
    Xm = 15.000 ohm Xm = 1500.000 ohm
    Series branch ref. to LV side Series branch ref.to HV side
    Ze = 0.0040 + j 0.0090 ohm Ze = 0.4000 + j 0.90 ohm
    Hit return to continue
    Enter load kVA, S2 = 150
    Enter load power factor, pf = 0.8
    Enter ‘lg’ within quotes for lagging pf
    or ‘ld’ within quotes for leading pf -> ‘lg’
    Enter load terminal voltage in volt, V2 = 240
    Secondary load voltage = 240.000 V
    Secondary load current = 625.000 A at -36.87 degrees
    Current ref. to primary = 62.500 A at -36.87 degrees
    Primary no-load current = 2.949 A at -33.69 degrees
    Primary input current = 65.445 A at -36.73 degrees
    Primary input voltage = 2453.933 V at 0.70 degrees
    Voltage regulation = 2.247 percent
    Transformer efficiency = 94.249 percent
    Maximum efficiency is 95.238 %occurs at 288 kVA with 0.8pf

  14. سلام
    در کد زیر چرا لیبل محور x,yرا در نمودار در نظر نمی گیرد؟
    figure(2);
    axis on;

    % xlabel=(‘Number of node’);
    %ylabel=(‘excute time(sec)’);
    t=[0 2.74 3.09 5.38 6.57 7.63 8.50 9.72 10.52 11.37 12.48 14.74 16.24 16.84 17.02 ];
    %t1=[0 4.56 5.39 6.28 6.54 9.67 10.25 11.02 12.00 13.03 16.40 18.38 18.69 19 19.5];%t1base
    t1=[0 8 10.5 12.8 15 16.54 19.67 20.25 21.02 23.03 26.40 28.38 32.69 35 37];%baseaper
    number=[0 20 25 30 35 40 45 50 55 60 65 70 75 80 85];
    plot (number , t , ‘r:o’, number,t1,’b:+’);
    title(‘ Execution time for the case ncand = 5’);
    xlabel=(‘Number of node’);
    ylabel=(‘excute time(sec)’);
    hleg1=legend(‘Fuzzyor’,’Dpor’);
    set(hleg1,’Location’,’NorthWest’);
    با تشکر

    1. ایران متلب

      سلام

      خطا را به طور کامل قرار دهید.

      این خطا بیشتر موقعی ظاهر می شود که یک تابع تعداد ورودی ها کمتر از تعداد مدنظر بهش داده باشید

  15. سلام خسته نباشید, من یک سیستم فازی طراحی کردم ولی موقع وارد کردن تابع عضویت در بازه[0.1 0] در حالت گوسین این ارور رو میده invalid parametet vector.no change made to mf gaussmf
    دلیلش چیه باید چیکار کنم؟
    ممنون

    1. سلام
      تابع عضویت gaussmf نمی تواند مقدار صفر را به عنوان پارامتر بگیرد.
      نوع تابع عضویت را عوض کنید یا بازه را از 0 به 0.0001 تغییر دهید.

        1. و سوال دیگه ای هم که دارم, مشکلی نیست فقط در این بازه تابع تغییر کنه, و بقیه بازه ها همون گوسین بمونه؟

  16. سلام برنامه من این خطا رو می ده باید چیکار کنم؟
    Reference to non-existent field ‘busdata’.

    Error in Cost (line 46)
    [row,column]=find(mpc.busdata(:,1)==a);

    Error in pso_opfff (line 52)
    particle(i).cost=Cost(particle(i).position);

    1. سلام

      در آرایه های ساختاری یا structure باید تمام فیلدها تعریف شده باشد.
      شما فیلدی به نام busdata را فراخوانی کردید اما در خط های قبلی آنها را مقداری دهی یا تعریف نکردید و متلب از برنامه خطا گرفته که این فیلد busdata مشخص نیست.
      برای توضیح بیشتر به فیلم زیر مراجعه کنید
      لینک

  17. با سلام من یک کدنویسی متلب داشتم که وقتی به زوایه ها مقدار صفر میدهم برنامه بدون مشکل اجرا میشه اما وقتی زوایه را میخوام تغییر بدهم با این خطا مواجه میشم لطفا اگه امکان داره منو راهنمایی کنید این قسمتی از برنامه هست
    E11=39e9; E22=8.66e9; G12=3.8e9; G13=G12; G23=3.8e9; v12=0.28; v21=v12*E22/E11;
    teta=0;

    Q11=E11/(1-(v21*v12)); Q22=E22/(1-(v21*v12)); Q12=(v12)*E22/(1-(v21*v12)); Q66=G12; Q44=G23; Q55=G13;
    q_(1,1)=Q11*(cosd(teta))^4+Q22*(sind(teta))^4+2*(Q12+2*Q66)*((sind(teta))^2)*(cosd(teta))^2;
    q_(2,1)=(Q11+Q22-4*Q66)*sind(teta)^2*cosd(teta)^2+Q12(sind(teta)^4+cosd(teta)^4);
    این خطا را نشون میده وقتی زاویه را مقداری غیر از صفر میدم
    Subscript indices must either be real positive integers or logicals.

    1. سلام
      در متلب اندیس های آرایه ها باید حتما عددی بزرگتر از 0 و عدد صحیح باشند. اگر عددی غیر از این بگذارید متلب خطا می دهد.

      مثلا

      a =[3 5 6 8]

      اگر در برنامه داشته باشید
      a(0)
      یا
      a(1.5)
      متلب این خطا می دهد.
      شما باید برنامه را خط به خط اجرا کنید. یکی از این روشها breakpoint می باشد. می توانید برای توضیح بیشتر به فیلم سیر تا پیاز ایران متلب مراجعه کنید.
      لینک

  18. سلام
    من یه برنامه نوشیتم البته تو سیمولینک که از کنترل کننده فازی هم استفاده کردم ول موقع ران ارور میده.
    ” invalid FIS file name ”
    برای رفع این خطا چکار کنم؟

    1. سلام
      این خطا کاملا واضحه شما یا نام سیستم فازی را اشتباه وارد کردی
      یا سیستم فازی در مسیر متلب نیست که متلب نمیتونه پیداش کنه.
      احتمال مشکلی اول بیشتره.

  19. سلام.
    میخواستم بدونم در دستور evalfis پارامتر ORR نشان دهنده چی هست؟
    میشه لطفا جواب را به ایمیلم بفرستید؟
    ممنون.

    1. سلام
      خروجی ORR مقدار خروجی هر تابع عضویت membership function سیستم فازی شما می باشد. هر تعداد تابع عضویت در سیستمت داری به همون اندازه هم مقدار در ORR داری.
      اندازه آن numPts-by-numRules*L می باشد
      numPts همان تعداد نمونه ها در ورودی input دستور evalfis است.
      numRules تعداد قانونها rule
      L هم تعداد خروجی ها می باشد.
      برای توضیح بیشتر بسته جامع آموزش سیستم فازی را می تونید تهیه کنید.
      لینک بسته آموزش جامع فازی

  20. با سلام
    من یه برنامه بهینه سازی چند هدفه دارم که با الگوریتم ژنتیک چند هدفه میخوام ران کنم اما متاسفانه ران نمیشه با این ارور مواجه میشم
    Optimization running.
    Error running optimization.
    Not enough input arguments.
    لطفا راهنمایی کنید ممنون میشم

    1. با سلام
      این خطا هنگامی صادر می شود که شما دارید یک تابعی را فراخوانی می کنید اما ورودی ها را درست ندادید.
      مثلا تابع باید 4 تا ورودی بگیره شما اومدی 2 تا ورودی دادی.
      Not enough input argument یعنی همین .
      برو روی خطی که داره میگه این تابع را ورودی کم دادی و نحوه فراخونیت را درست کن.

      1. سلام
        من تا فردا باید فایل پروژه تحویل بدم نیاز به کمک خیلی سریع دارم خواهشا کسی میتونه کمکم کنه

  21. با سلام

    قسمت برنامه های متلب app ، برنامه optimazation اجرا نمیشه اصلا و ارور جاوا میده . مشکلش کجاست؟

  22. سلام دوستان به شدت به کمک نیاز دارم
    دو روز به دفاع من مونده و نرم افزار موقع run پیغام خطا میده
    میتونم تلفنی از کسی کمک بگیرم
    لطفا

  23. فاطمه بهداد

    سلام من همون ابتدای برنامه ارور زیر رو دارم؟ میشه لطفا راهنمایی بفرمایید؟
    Error: File: bisct.m Line: 4 Column: 1
    Function definitions are not permitted in this context.

    برنامم هم اینه:
    clear
    clc
    c(i)=zeros(1,maxlter);
    function [cc(i),c(i)]= bisct(f,a,b,t,maxlter)
    fa=feval(f,a);fb=feval(f,b);e=eps;
    if fa*fb>0,
    disp(‘error’)
    end;
    n=0;
    for i=1:maxlter
    c(i)=(a+b)/2;fc=feval(f,c(i));
    if abs(fc)<t;
    break;
    elseif fa*fc<0
    b=c(i);fb=fc;
    else
    a=c(i);
    end
    n=n+1;
    end
    cc(i)=c(i);

    این پرانتزا و سمی کالونا تو فایل خودم درست ظاهر میشه

    1. سلام
      دوست عزیز شما نمی توانید در یک script ، یک تابع را تعریف کنید.
      یا می توانید تابع را در یک m فایل ذخیره کنید و در script فراخوانی کنید.
      یا script خود را به یک تابع تبدیل کنید. در این حالت می توانید در یک تابع، چندین تابع تعریف کنید.
      من روش یک را پیشنهاد می کنم چون دو مزیت دارد اول اینکه اگر به این تابع در برنامه دیگری نیاز شد به راحتی فراخوانی می کنید. دوم اینگه تعداد m فایل هایی که نوشتید زیاد می شود و به خودتون میگید دارم برنامه نویس میشما 🙂

    1. سلام و تشکر از شما برای سوالتون
      ما در متلب متغییرهایی از نوع ساختاری یا structure داریم. که طریقه فراخوانی آنها به صورت زیر است

      A.score

      A یک متغییر ساختاری است
      score فیلد آن است.

      حال اگر شما متغییری که ساختاری نباشد را به صورت یک متغییر ساختاری فراخوانی کنید این خطا ظاهر می شود.
      ممکن است در خط های قبلی فیلد این متغییر مقداردهی نشده باشد، چون در اینصورت به عنوان یک متغییر عادی می باشد.

      1. ممنون از پاسخگویی شما
        ارور از خط زیر گرفته میشه :
        dim=eldat.compute
        که قبلاglobal eldat تعریف شده
        که با توجه به این ،توضیحات شما درسته حالا برای رفع ارور باید چیکار کنم؟

        1. کاربر عزیز خدمتتون گفته شد که فیلد compute در متغییر eldat باید قبلش تعریف شده باشد نه متغییر عمومی تعریف شده باشد.
          البته در برنامه نویسی پیشرفته متلب زیر توابع ، یک تابع هم به این صورت فراخوانی می شود که به کد شما مربوط نمی باشد.

  24. با سلام برنامه من
    error Error in evalfis (line 83)
    [output,IRR,ORR,ARR] = evalfismex(input, fis, numofpoints);

    Error in mywangmen (line 107)
    yy= evalfis(C,N);
    دو تا ورودی دارم که هرکدوم 2000 نقطه داره و C یک ماتریس 2000*2 می باشد چه مشکلی داره 2000 سطر و دو ستون

    1. دستور evalfis برای دادن ورودی به سیستم فازی و گرفتن جواب یا همان خروجی از آن می باشد.
      برای آموزش کامل می توانید بسته آموزش فازی یا فیلم آموزش فازی نوع یک یا فیلم آموزش نروفازی را تهیه کنید.
      در دستور evalfis ، ورودی اول داده های ورودی به سیستم فازی می باشد و ورودی دوم متغییر fis می باشد.

  25. با سلام
    میخواستم بدونم که در دستور solve چجوری یک معادله پارامتری رو حل کنم؟
    و همچنین اگر در این دستور از متغیرهایی که از پیش تعریف شده و مقداری بر حسب یک سری پارامتر خاص گرفته استفاده کنم این دستور مقادیر اختصاص داده شده به این متغیرها رو میبینه یا اینکه خود اون ها رو به صورت یک متغیر میبینه؟

    1. سلام
      در یک پست نمیشه توضیح داد.
      شما با دستور solve می تونید یک معادله پارامتری تعریف کنید.
      اول باید با دستور syms متغییر ها را تعریف کنید و سپس معادله را تعریف کنید.
      این دستور متغییرهایی که با دستور syms تعریف بشه را به صورت متغییر میبینه، اگر مقداری به آنها اختصاص بدید نوع متغییر به نوع معمول double تغییر می کنه و متلب دیگه اونو یک متغییر سمبولیک در نظر نمیگیره.

      ما در فیلم آموزشی سیر تا پیاز این موضوع را توضیح دایم.

  26. T=input(‘T=’)
    L=input(‘L=’)
    B=input(‘B=’)

    n=1100
    for i=1:n
    if B/L<0.11
    cseven=0.229577*(B/L)^0.3333;
    else
    if 0.11<B/L0.25
    cseven=0.5-0.0625*(L/B);
    end
    end
    end
    end

    سلام مشکل این حلقه چیه…ممنون میشم جواب بدین

    1. سلام
      B/L0.25
      باید بین B/L و 0.25 ضربدر وجود داشته باشد.
      سعی کن B/L را به عنوان یک متغییر جدید تعریف کن تا در برنامه به این مشکل ها برنخوری.
      در ضمن چند شرط بعد از گرفتن ورودی ها بگذار تا کاربر عدد غیرمجاز بهت نده. مثلا اگر L=0 بهت بده ، مخرج کسر نمیتونه صفر باشه.
      محصول مرتبط سیر تا پیاز متلب

  27. سلام. من برای انجام یه پروژه چند تا function توی متلب تعریف کردم. و بعد توی یک m-file جدا ازشون استفاده کردم. ولی functionها رو بصورت جدا که run میکنم خطای کافی نبودن آرگومان ورودی رو میده و در نتیجه برنامه کلیم هم اجرا نمیشه.
    من این سه تا فانکشن رو بصورت جدا در mfile های جدا تعریف کردم. اولی رو موقع ران کردن اروری نمیده ولی واسه دومی و سومی اروری که گفتم رو میده

    function gen_data=call_gendata
    gen_data=[
    1 0 350 0.01 0.3 0.2
    2 0 1145.55 0.01 0.3 0.2
    3 0 750 0.01 0.3 0.2
    4 0 732 0.01 0.3 0.2
    5 0 608 0.01 0.3 0.2
    6 0 750 0.01 0.3 0.2
    7 0 660 0.01 0.3 0.2
    8 0 640 0.01 0.3 0.2
    9 0 930 0.006 0.3 0.2
    10 0 1100 0.006 0.3 0.2 ];

    function cost=costfun (x)
    gen_data=call_gendata;
    x=x’;
    cost=sum(gen_data(:,4).*x.^2+gen_data(:,5).*x+gen_data(:,6));

    function objective=costfunsa(x)
    gen_data=call_gendata;
    x=x’;
    cost=sum(gen_data(:,4).*x.^2+gen_data(:,5).*x+gen_data(:,6));
    objective=cost+1e4*(sum(x)-6254.23).^2;

    اینم کد اصلیمه که از هر سه تا تابع باید توش استفاده کنم
    demand=6254.23;
    pcf=1e4;
    gen_data=call_gendata;
    dimnsn=10;
    mni=1000;
    npop=100;
    lb=gen_data(:,2)’;
    ub=gen_data(:,3)’;
    Aeq=ones(1,10);
    beq=demand;
    x0 = (gen_data(:,3) + (gen_data(:,2) – gen_data(:,3)) .* rand(dimnsn,1))’;
    options = saoptimset(‘MaxFunEvals’ ,mni, ‘PlotFcns’ , @saplotbestf, ‘StallIterLimit’,inf,’TimeLimit’,inf,’Display’,’iter’)
    [x,fval]=simulannealbnd(@costfunsa,x0,lb,ub,options)
    cost=fval-pcf*(sum(x)-demand)^2;
    fprintf(‘\n’),display(‘finalsolution is ; ‘),Fs=x’
    fprintf(‘\n’),display(‘load not served : ‘),loadMismatch=sum(x)-demand
    fprintf(‘]n’),display(‘Associated cost:’,cost

    1. سلام
      خطای کافی نبودن آرگومان تابع یک خطایی است که به سادگی قابل حل است.
      شما در این برنامه یک cost برای بهینه سازی تعریف کردید. باید دقت کنید که تابع هزینه مطایق خواسته تولباکس متلب تعریف کنید.
      ممکن است شما یک ورودی تعریف کرده باشید اما نیاز به دو ورودی باشد.
      پیشنهاد من به شما تهیه فیلم آموزش بهینه سازی در متلب می باشد که تعریف تابع هزینه (cost) با چند مثال توضیح داده شده است.
      فیلم آموزش بهینه سازی در متلب

  28. سلام چرا کد زیر بجای اجرای قسمت دوم پیام خطا را چاپ می کند ؟
    % This make.m is for MATLAB and OCTAVE under Windows, Mac, and Unix

    try
    Type = ver;
    % This part is for OCTAVE
    if(strcmp(Type(1).Name, ‘Octave’) == 1)
    mex libsvmread.c
    mex libsvmwrite.c
    mex svmtrain.c ../svm.cpp svm_model_matlab.c
    mex svmpredict.c ../svm.cpp svm_model_matlab.c
    % This part is for MATLAB
    % Add -largeArrayDims on 64-bit machines of MATLAB
    else
    mex CFLAGS=”\$CFLAGS -std=c99″ -largeArrayDims libsvmread.c
    mex CFLAGS=”\$CFLAGS -std=c99″ -largeArrayDims libsvmwrite.c
    mex CFLAGS=”\$CFLAGS -std=c99″ -largeArrayDims svmtrain.c ../svm.cpp svm_model_matlab.c
    mex CFLAGS=”\$CFLAGS -std=c99″ -largeArrayDims svmpredict.c ../svm.cpp svm_model_matlab.c
    end
    catch
    fprintf(‘If make.m fails, please check README about detailed instructions.\n’);
    end
    کامپایلر c را هم نصب کرده ام اما باز خطای if make.m fails……را می زند

    1. سلام
      شما ببینید کدام کمپایلر C را نصب کردید. نکته بعدی این است که بایستی فایل c را با سیستم خودتون کمپایل کنید و سپس دستورات mex اجرا می شوند.
      فایل mex که از جایی گرفتید ممکن است بر روی سیستم شما خطا بدهد. لذا ابتدا فایلهای c را با دستور mex متلب کمپایل کنید و سپس اجرا بگیرید.

  29. رضا معمر یامی

    با سلام الگوریتم pitch correction تو نتلب و برنامه شو دارم ولی اجرا میکنم دایم خطای زیر رو در یافت میکنم لطفا کمکم کنید
    %%Primitive pitch correction function. Requires input STFT, its frequency
    %%space, and a table of pitches to compare to. Y can bt the HPS of S or any
    %%other peak-accentuated sequence.
    function S_corrected = pitchCorrector(S, F, Y, pitchtable)

    bins = length(S(1,:));
    S_len = length(S(:,1));

    %%Pre-allocates memory for arrays
    maxpeaks = zeros(1,bins);
    indices = zeros(1,bins);
    pitches = zeros(1,bins);
    correctedpitches = zeros(1,bins);
    ratio = zeros(1,bins);
    S_corrected = zeros(S_len,bins);

    %%Finds the maximum amplitudes and their corresponding frequencies in the
    %%Fourier spectrum. correctedpitches stores the closest exact pitch to
    %%each of these maximum pitches. ratio stores the factor by which each
    %%ST-spectrum will have to be shifted in order to obtain the correct
    %%pitch.
    for k = 1:bins
    maxpeaks(k) = max(Y(:,k));
    indices(k) = find(Y(:,k) == maxpeaks(k),k,’first’);
    pitches(k) = F(indices(k));
    correctedpitches(k) = compareToPitches(pitches(k), pitchtable);
    ratio(k) = correctedpitches(k)/pitches(k);

    end

    %%This for-loop is separate from the previous for debugging purposes.
    %%Utilizes the fact that the frequencies in F are spaced linearly, starting at 0, so that
    %%the ratio between frequencies is equivalent to the ratios between sample
    %%indices. If ratio > 1, S_corrected will end with a number of zeros. If
    %%ratio < 1, S_corrected will contain many repeated values. Either way,
    %%high-frequency information will be lost.

    for k = 1:bins
    for j = 1:S_len
    y = round(j/ratio(k));

    %%Prevents negative indices
    if y < 1
    y = 1;
    end

    %%Non-constant frequency scaling
    if y <= S_len
    S_corrected(j,k) = S((y),k);
    end
    end
    end

    end

    خطای مشاهده شده:
    pitchCorrector
    Error using pitchCorrector (line 6)
    Not enough input arguments.

    1. با سلام
      همانطور که می بینید تابع شما 4 ورودی دارد ولی شما به درستی به آن ورودی نمی دهید.
      خطای
      Not enough input arguments
      یعنی شما تعداد ورودی های تابع را 4 تا قرار ندادید.

  30. با سلام
    وقتی میخوام از ماتریس پارامتری 6*6 که معکوس بگیرم ارور میده.
    آیا مشکل از ضعف سیستم است؟روی 3تا سیستم دیگه 7 هسته و رم 16 تست کردم ولی بازم همین ارور رو میده
    مشکل از بد نوشته شدنه کد و اشغال فضای رم هست؟
    چطوری باید ماتریس پارامتری 6 در 6 معکوس بگیرم؟
    مربع نوار اسکرول به رنگ سبز هست و قاعدتا نباید مشکلی داشته باشه.
    کد پیوست کردم.
    ممنون میشم بررسی کنین و جواب بدین.

    clc;
    clear;
    % dynamic inverse
    syms r_u r_d alfa_u alfa_d z_cg h_0 si fi teta x y z i_xx i_xy i_zx i_zy i_yx i_xz i_yy i_yz i_zz m_p v_x v_y v_z vdot_x vdot_y vdot_z omega_x omega_y omega_z omegadot_x omegadot_y omegadot_z
    g=9.81;
    i_xy=i_yx ;
    i_xz=i_zx;
    i_yz=i_zy;
    e_11=cos(teta)*cos(si);
    e_21=cos(teta)*sin(si);
    e_31=-sin(teta);
    e_12=sin(fi)*sin(teta)*cos(si)-cos(fi)*sin(si);
    e_22=sin(fi)*sin(teta)*sin(si)+cos(fi)*cos(si);
    e_32=sin(fi)*cos(teta);
    e_13=cos(fi)*sin(teta)*cos(si)+sin(fi)*sin(si);
    e_23=cos(fi)*sin(teta)*sin(si)-sin(fi)*cos(si);
    e_33=cos(fi)*cos(teta);
    x_u=sym(zeros(1,6));
    y_u=sym(zeros(1,6));
    z_u=sym(zeros(1,6));
    x_d0=sym(zeros(1,6));
    y_d0=sym(zeros(1,6));
    z_d0=sym(zeros(1,6));
    x_d=sym(zeros(1,6));
    y_d=sym(zeros(1,6));
    z_d=sym(zeros(1,6));
    l=sym(zeros(1,6));
    u_x=sym(zeros(1,6));
    u_y=sym(zeros(1,6));
    u_z=sym(zeros(1,6));
    for i=1:6
    x_u(i)=r_u*cos((pi/3)*(i)+(-1)^i*alfa_u/2);
    y_u(i)=r_u*sin((pi/3)*(i)+(-1)^i*alfa_u/2);
    z_u(i)=z_cg;
    x_d0(i)=r_d*cos(((2*(1+(2/3)*(i-1))-2)*pi/3)-(-1)^i*alfa_d/2);
    y_d0(i)=r_d*sin(((2*(1+(2/3)*(i-1))-2)*pi/3)-(-1)^i*alfa_d/2);
    z_d0(i)=z_cg+h_0;
    x_d(i)=e_11*x_d0(i)+e_12*y_d0(i)+e_13*z_d0(i)+x;
    y_d(i)=e_21*x_d0(i)+e_22*y_d0(i)+e_23*z_d0(i)+y;
    z_d(i)=e_31*x_d0(i)+e_32*y_d0(i)+e_33*z_d0(i)+z;
    l(i)=sqrt((x_u(i)-x_d(i))^2+(y_u(i)-y_d(i))^2+(z_u(i)-z_d(i))^2);
    u_x(i)=(x_d(i)-x_u(i))/l(i);
    u_y(i)=(y_d(i)-y_u(i))/l(i);
    u_z(i)=(z_d(i)-z_u(i))/l(i);
    end
    A=[u_x(1) u_x(2) u_x(3) u_x(4) u_x(5) u_x(6);u_y(1) u_y(2) u_y(3) u_y(4) u_y(5) u_y(6);u_z(1) u_z(2) u_z(3) u_z(4) u_z(5) u_z(6);u_z(1)*y_u(1)-u_y(1)*z_u(1) u_z(2)*y_u(2)-u_y(2)*z_u(2) u_z(3)*y_u(3)-u_y(3)*z_u(3) u_z(4)*y_u(4)-u_y(4)*z_u(4) u_z(5)*y_u(5)-u_y(5)*z_u(5) u_z(6)*y_u(6)-u_y(6)*z_u(6);-u_z(1)*x_u(1)+u_x(1)*z_u(1) -u_z(2)*x_u(2)+u_x(2)*z_u(2) -u_z(3)*x_u(3)+ u_x(3)*z_u(3) -u_z(4)*x_u(4)+ u_x(4)*z_u(4) -u_z(5)*x_u(5)+ u_x(5)*z_u(5) -u_z(6)*x_u(6)+u_x(6)*z_u(6);u_y(1)*x_u(1)-u_x(1)*y_u(1) u_y(2)*x_u(2)-u_x(2)*y_u(2) u_y(3)*x_u(3)-u_x(3)*y_u(3) u_y(4)*x_u(4)-u_x(4)*y_u(4) u_y(5)*x_u(5)-u_x(5)*y_u(5) u_y(6)*x_u(6)-u_x(6)*y_u(6)];

    B=[m_p*(vdot_x-v_y*omega_z+v_z*omega_y+g*sin(teta));m_p*(vdot_y-v_z*omega_x+v_x*omega_z-g*sin(fi)*cos(teta));m_p*(vdot_z-v_x*omega_y+v_y*omega_x-g*cos(fi)*cos(teta));i_xx*omegadot_x+i_xy*(omega_x*omega_z-omegadot_y)-i_xz*(omega_x*omega_y+omegadot_z)+omega_y*omega_z*(i_zz-i_yy)+i_yz*(omega_z^2-omega_y^2);i_yy*omegadot_y-i_xy*(omega_y*omega_z+omegadot_x)+i_xz*(omega_x^2-omega_z^2)+omega_x*omega_z*(i_xx-i_zz)+i_yz*(omega_x*omega_y-omegadot_z);i_zz*omegadot_z+i_xy*(omega_y^2-omega_x^2)+i_xz*(omega_x*omega_z-omegadot_x)+omega_x*omega_y*(i_yy-i_xx)-i_yz*(omega_x*omega_z+omegadot_y)];

    F=(inv(A))*B;

    1. ایران متلب

      با سلام
      شما از متغییرهای سمبولیک استفاده کردید. استفاده زیاد از این متغییرها باعث می شود متلب نتواند برنامه را اجرا کند.
      من دلیل استفاده از این متغیرها را متوجه نمی شوم.
      نکته بعدی تابع inv متغییر سمبولیک قبول نمی کند.

  31. محمد جراحی

    سلا م خسته نباشید ببخشید من متلبو میخوام نصب کنم رو ستاپ میزنم ارور میده مشکل از چیه باید چکار کنم اگ میشه لطفت راهنمایی کنید خیلی ضرورو یه

  32. با عرض سلام و احترام
    یک مدلی را در سیمولینک شبیه سازی کردم که شامل 3 تا فضای حالت و 3 تا کنترل کننده است وقتی ران می کنم یکی از فضای حالت ها زرد رنگ می شه و پیغام می ده
    Derivative input 1 of ‘simulink123/State-Space’ at time 0.13263028511581632 is Inf or NaN. Stopping simulation. There may be a singularity in the solution. If not, try reducing the step size (either by reducing the fixed step size or by tightening the error tolerances)
    نمی دونم مشکل از کجاست. برای فضای حالت ها شرایط اولیه هم گذاشتم بازم نشد. ممنون میشم راهنمایی کنید.

    1. ایران متلب

      با سلام
      توضیحات کامل این خطا در فیلم های آموزشی زیر قابل دسترسی است :
      آموزش-جامع-سیمولینک-simulinkمباحث-پیشرفته-در-سیمولینک
      اگر بخوام به طور خلاصه بگم سیمولینک از روش های حل عددی برای بافتن جواب استفاده می کند. در مدل شما در زمان مورد نظر این معادله به مشکل می خورد.

  33. سلام
    خسته نباشید
    کد متلب در کامپیوتر استادم اجرا میشه ولی همون کد یکبار تو سیستم من اجرا شد ولی دیگه هر کاری کردم اجرا نمیشه با این که کد رو هم اصلا تغییر ندادم.
    خطاهای زیر رو میگیره:
    ??? Index exceeds matrix dimensions.

    Error in ==> Rout at 27
    [value, next]= max(x(negbr));

    Error in ==> fitness at 3
    path = Rout(HS_Vector,indexI, Sensor,allneighber_,dist,dmax);

    Error in ==> BatAlgorithm at 51
    pop(i).fit=fitness(fitnes, pop(i).x,indexI, Sensor,allneighber_, dist, dmax,packet_size,Eelec,EFamp,ETamp);

    Error in ==> HS at 25
    pop= BatAlgorithm(fitnes,N,Sensor, indexI, dist,dmax,packet_size,Eelec,EFamp,ETamp,allneighber_);

    Error in ==> WSN at 78
    path=HS(fitnes,Number_of_Node,Sensor, i, dist,dmax,packet_size,Eelec,EFamp,ETamp,allneighber);%[i,Number_of_Node+1];%

    Error in ==> test at 15
    WSN(Sensor(1:Number_of_Nodes),Number_of_Nodes,Eo,equ,xm,ym, ‘black’);

  34. با سلام و خسته نباشید خدمت شما
    در اجرای برنامه به این خطا بر میخورم. میشه لطفا کمکم کنید؟
    Error in evalfis (line 83)
    [output,IRR,ORR,ARR] = evalfismex(input, fis, numofpoints);

    Error in Degree (line 37)
    FF1=evalfis([-1,1],F1);
    خیلی سپاسگزارم

    1. با سلام و تشکر از شما
      به احتمال خیلی زیاد در تعریف سیستم تاکاگی سوگنو اشتباهی داشتید.
      اگر این نبوده است، پس دارید ورودی ها را به دستور evalfis اشتباه می دهید. مثلا ممکن است سیستم شما یک ورودی باشد که شما دارید دو ورودی می دهید.

  35. سلام و خسته نباشید.
    در اجرای یک برنامه متلب یا خطای زیر روبرو میشم، و کلا اجرا نمیکنه:
    [ERROR USING OPEN[100 LINE
    FILE E;:/…./NEW FOLDER/ST1 NOT FOUND
    مشکل چیه؟

    1. سلام
      دوست گرامی همانطور که متلب هم در خطا توضیح داده است. نتوانسته مسیر اشاره شده در E:/…../NEW FOLDER/ST1 را پیدا کند. به احتمال زیاد این مسیر وجود ندارد.

  36. سلام
    خسته نباشید
    ببخشید معنای این خطا چیست؟
    Too many input arguments
    برنامه محاسبه fwhm رو توی یک function نوشتم و الان وقتی توی یک برنامه که فراخوانیش میکنم این ارور رو میده …
    ممنون میشم کمکم کنید

    1. سلام
      اگر به ترجمه خطا هم توجه کنید شما دارید تابع نوشته شده را با تعداد ورودی های بیشتری فراخوانی می کنید.

  37. با سلام

    در اجرای برنامه ام به خطای زیر برمی خورم. گویا بدلیل پائین بودن ورژن nargoutchk.m را ندارم از کجا این کد را پیدا کنم؟
    Error using ==> nargoutchk
    Not enough input arguments.

    Error in ==> ace at 79
    nargoutchk(0,7)

    1. با سلام
      خطای
      Not enough input arguments
      به معنای کم بودن تعداد ورودی های تابع nargoutchk می باشد.
      این تابع تعدادخروجی تابع را چک می کند.

    1. سلام
      دستورات متلب را باید با شکل و ترتیب خاصی وارد کنید. گاهی نگذاشتن یک ویرگول یا پرانتز یا … باعث این خطا می شود.
      خطی که باعث این خطا شده است را بررسی کنید.

    1. ایران متلب

      سلام

      در متلب دستور
      x(a:b)=c;

      یعنی خانه های a ام تا b ام آرایه x از با مقدار ثابت c پر می کند.

      این دستور یعنی از خانه 1 تا ده هزار را با 100 پر می کند.

  38. سلام ببخشید من یه برنامه نوشتم ولی با این ارور برخورد کردم باید چکارکنم؟

    Attempted to access xx(2); index out of bounds because numel(xx)=1.

    Error in truss (line 41)
    xa=xx(indice(2))-xx(indice(1));

    1. ایران متلب

      سلام

      خطای
      index out of bounds
      در مواقعی می آید که شما خانه ای از آرایه را فراخوانی می کنید که وجود ندارد. خانه دوم آرایه xx وجود ندارد.

  39. با سلام
    من می خوام یک فایل صوتی را در متلب خیره کنم قبلا از wavwrite استفاده می کردم و مشکلی نبود اما حالا که ورژن جدید متلب را نصب کردم هنگام استفاده از audiowrite خطای زیر را دریافت می کنم
    Error using audiowrite>validateFilename (line 323)
    Cannot create file ccc.wav. Permission Denied.

    Error in audiowrite (line 105)
    [props.filename, fileExisted] = validateFilename( props.filename );

    واقعا کلافه شدم لطفا کمکم کنید

    1. ایران متلب

      سلام
      خودش نوشته دیگه ، permission را set نکردید.
      روی فایل راست کلیک کنید و permission را set کنید.

  40. با سلام
    بنده یک کد بهینه سازی با pso نوشتم که وقتی اجراش کردم متوجه شدم بعضی قیود ارضا نمیشه و تغییری در در کدم انجام دادم که فقط مقدارهای ثابتی رو به بعضی از نتایجم اضافه کنه و تغییری در متغیر بهینه سازی ندادم اما الان برنامه ران نمیشه و با ارور زیر رو به رو میشم ، اگر ممکنه منو راهنمایی کنید.
    Reference to non-existent field ‘Position’.

    Error in pso (line 61)
    particle(i).Velocity = w*particle(i).Velocity …

    1. ایران متلب

      سلام

      متغییر particle یک متغییر ساختاری است و دارای فیلدهایی هست. شما در برنامه نوشتید particle(i).Velocity ، اما مثل اینکه متغییر particle این فیلد را ندارد.

  41. سلام
    من دستور زیر را در متلب نوشته ام. اجرا می شود ولی legend را نمایش نمی دهد. و خطا می دهد. ممنون می شوم اگر راهنمایی ام کنید.

    clc;
    clear;
    close all;
    f0=2;
    t=0:0.01:2;
    x=cos(2*pi*f0*t);
    figure;
    plot(t,x,’ro:’,’markersize’,12,’markerfacecolor’,[0.8 1 0]);
    legend(‘cos’);

    خطا:
    Error in legend (line 13)
    legend(‘cos’);

    1. سلام

      کد را داخل متلب اجرا کردم.

      یکی از کوتیشن ها را اشتباه زدید

      درستش اینه

      legend(‘cos’);

  42. با سلام
    من یه دیتای 2000 رکوردی با 41 پارامتر ورودی دارم که میخوام با genfid 3 در سیستم عصبی فازی اموزش داده بشه ولی متاسفانه این ارور رو میده
    Error using anfismex
    Illegal parameters in fisGaussianMF() –> sigma = 0

    Error in anfis (line 249)
    anfismex(trn_data, in_fismat, t_opt, d_opt, chk_data, method);

    Error in prob_a2 (line 83)
    matfile_probe=anfis(trnData1,matfile_probe,TrainOptions,DisplayOptions,[],OptimizationMethod);

    با تغیرش به genfis2 مشکل حل میشه ولی من در پروژه باید از خوشه بندی استفاده کنم
    لطفا راهنمایی کنید چطور میشه این ارور رو برطرف کرد
    ممنون

    1. ایران متلب

      سلام

      این خطا به چندین دلیل ممکن است رخ دهد. نوع تابع عضویت ، درجه تابع عضویت ، پارامترهای آموزش انفیس و ….

      دلیل اصلی این هست که genfis3 از یک روش مشتقی یا گرادیان استفاده می کند. اگر سیگما صفر شود این روش خطا می دهد.

      شما اگر نوع تابع عضویت یا درجه تابع عضویت را تغییر دهید مشکل حل می شود.

  43. با عرض سلام
    بنده میخواهم تابع سیگما به صورت زیر را رسم کنم. با دستورهای مختلف رسم کردم ولی خطا میدهد. لطفا راهنمایی بفرمایید.
    t و u متغیرهای بنده هستند.
    با تشکر
    >> t=linspace(0,100);
    >> u=symsum(2000/((2*m+1)*pi))*(sin(0.05*(2*m+1)*pi))*(exp(-0.25*pi^2*(2*m+1)^2*t));
    >> plot(t,u)
    Error using plot
    Conversion to double from sym is not possible.

    1. ایران متلب

      با سلام
      شما قبل از این دستورات از دستور sym یا syms استفاده کردید. شما از متغییرات سمبولیک در فرمول ها می تونید استفاده کنید اگر بخواهید عدد حاصلشون را در عبارتی استفاده کنید ابتدا باید انها را به double تبدیل کنید. سپس استفاده کنید.
      نکته بعدی : شما می تونید از تابع ezplot هم استفاده کنید که فرمول های سمبولیک را رسم می کند. جایگزین ezplot .
      اگر بهت کمک کرد دعام کن.

  44. سلام، وقت بخیر
    من یه فایل یداشتم که قبلا با متلب 2007 ران میکردم و مشکلی نداشت. اما الان که با متلب 2017 میخوام باز کنم ران نمیشه و ارور زیر را میده.میشه راهنمایی کنید باید چیکار کنم؟چون .P هست و من امکان دسترسی بهش رو ندارم.ممنون

    The P-code file F:\low was generated prior to Matlab version 7.5 (R2007b) and is no longer supported. Use pcode to regenerate the file using Matlab R2007b or later.

    1. سلام
      کدهای P دارای encoding خاصی هستند و به محتوی آن هیچ دسترسی نمی تونیم داشته باشیم.
      یکی از مشکلات متلب این هست که هر نسخه جدیدی که می آید بعضی از تابع ها حذف و برخی جدید اضافه می شوند. که این یک نقص است اما متلب همچنان این کار را در هر نسخه جدیدی انجام میدهد.

  45. سلام خسته نباشید کد برنامه ی من بدای پیدا کردن ماکزیمم یه تابع با استفاده از روش ژنتیک هستش واسه خط 16 خطا میده error in genetic (line16;مشکلش چیه ؟
    Clc;
    clear all;
    N=50;
    Pc=0.9;
    Pm=0.005;
    ITER=100;
    m=2;
    BS=[10 10];
    L=sum(BS);
    Lo=[-2 -3];
    Hi=[2 3];
    population=round(rand(N,L));
    best_so_far=[];
    Average_fitness=[];
    for it=1:ITER
    [real_val]=chrom_decode(population,N,L,BS,m,Lo,Hi);
    [selection_probablity,fit,ave_fit,max_fit,opt_sol]=fit_eval(real_val,N,m);
    if it==1
    best_so_far(it)=max_fit;
    final_sol=opt_sol;
    elseif max_fit>best_so_far(it-1)
    best_so_far(it)=max_fit;
    final_sol=opt_sol;
    elsebest_so_far(it)=best_so_far(it-1);
    end
    Average_fitness(it)=ave_fit;
    [matin_pool]=g-roulette_wheel(population,N,selection_probablity);
    [new_pool]=g_crossover(mating_pool,Pc,N,L);
    [population]=g_mutation(new_pop,Pm,N,L);
    end
    display(‘final Solution optimum fitness’);
    result=[final_sol,bes_so_far(end)];
    x=1:ITER;
    figur,plot(x,best_so_far,’k’,x,Average_fitness,’-k’);
    xlabale(‘Generation’);
    ylabel(‘Fitness Function’);
    legend(‘Best_so_far’,’Average fitness’);
    %%%chrom_decode.m%%%
    function[real_val]=chrom_decode(population,N,L,BS,m,Lo,Hi)
    real_val=[];
    STED(1)=1;
    for i=2:m+1
    STED(i)=STED(i-1)+BS(i-1);
    end
    for j=1:m
    x=BS(j):-1:0;
    pow2x=2.^x;
    for i=1:N
    gene=population(i,STED(j):STED(j+1)-1);
    var_norm=sum(pow2x.*gene)/(2^BS(j)-1);
    real_val(i,j)=Lo(j)+(Hi(j)-Lo(j))*var_norm;
    end
    end
    end
    %%%fit_eval.m%%%
    function[selection_probablity,fit,ave_fit,max_fit,opt_sol]=fit_eval(real_val,N,m)
    for i=1:N
    x=real_val(i,:);
    fit(i)=(x(1)^2-x(2)^2+4*x(2)-x(1)*x(2)-4);
    end
    selection_probablity=fit/sum(fit);
    ave_fit=mean(fit);
    [max_fit,max_loc]=max_fit;
    opt_sol=real_val(max_loc,:);
    end
    function[mating_pool]=g_rulette_wheel(population,N,selection_probablity)
    cdf(1)=selection_probablity(1);
    for i=2:N
    cdf(i)=cdf(i-1)+selection_probablity(i);
    end
    for i=1:N
    q=rand;
    for j=1:N
    if q<=cdf(j)
    matin_pool(i,:)=population(j,:);
    break;
    end
    end
    end
    end
    function[new_pop]=g_crossover(mating_pool,Pc,N,L);
    parent_numrand_perm(N);
    for j=1:2:N
    pointer1=parent_num(j);
    pointer2=parent_num(j+1);
    cut_point=randi(1,1,L);
    off1=matin_pool(pointer1,:);
    off2=mating_pool(pointer2,:);
    if rand<Pc
    temp=off2;
    off2(cut_point+1:end)=off1(cut_point+1:end);
    off1(cut_point+1:end)=temp(cut_point+1:end);
    end
    new_pop(j,:)=off1;
    new_pop(j+1,:)=off2;
    end
    end
    function[population]=g_mutation(new_pop,Pm,N,L);
    mask=rand(N,L)<=Pm;
    poulation=xor(new_pop,mask);
    end

    1. شما باید خطا را دقیق بگذارید تا بتونم کمکتون کنم
      متلب یه پیغام چاپ می کند. همون را بگذارید.

  46. با سلام بنده در برنامه نیاز به تعریف تابع لژاندر وابسته داررم
    اما برای plm
    اما من برای pl,m+1
    ,
    Pl,m-1
    نیز نیاز دارم که برنامه ام ارور میده خواهشا رانمایی کنید خیلی بهش نیاز دارم
    برنامه ام
    for l=1:lmax
    for m =0:l
    if abs(m)>l
    Alm=0;
    Blm=0;
    elseif m >= 0
    L=legendre(l,e,’norm’);
    plm=L(m+1,:,:);%Plm
    Plm= squeeze(plm);

    plm1=L(m+2,:,:);%plm+1
    Plm1= squeeze(plm1);
    plm2=L(m,:,:);%plm-1
    Plm2= squeeze(plm2);
    خطاش
    Subscript indices must either be real positive integers or logicals.

    Error in AlmBlm (line 27)
    plm2=L(m,:,:);%plm-1

    Index exceeds matrix dimensions.

    Error in AlmBlm (line 25)
    plm1=L(m+2,:,:);%plm+1

    1. سلام
      این خطا
      Subscript indices must either be real positive integers or logicals.

      یعنی شما دارید خانه ای از آرایه را با عدد غیر صحیحی صدا می زنید مثلا خانه صفرم یا خانه منهای 2 ام. چون همچین خانه ای نداریم متلب هم این خطا را می دهد.

  47. سلام
    من میخوام کسی برام پروژه متلب بنویسه برای رشته فیزیک
    لطفا معرفی کنید و هزینه اش معمولا چنده

  48. با سلام
    ببخشید میشه لطفاً طود من و راهنمایی کنین
    این خطا مربوط به چیه ؟
    Attempted to access W(25); index out of bounds because numel(W)=1.

    1. با سلام
      متلب داره به زبان غیر شیرین انگلیسی بهتون میگه دیگه :

      شما در کدتون خونه 25 ام از آرایه W را صدا زدید اما متلب خطا داده چون W فقط یک خونه بیشتر نداره.

  49. خواهش میکنممممم جواب بدین
    این ارور یعنی چه؟
    Cannot find an exact (case-sensitive) match for ‘createmodel’

    The closest match is: Createmodel in D:\Program Files\MATLAB\R2018b\bin\Createmodel.m

    Error in saa (line 6)
    model=createmodel(); % Create Problem Model

    1. شما با دستور
      model=createmodel();
      یک تابع را فراخوانی کردید. متلب ابتدا در کد جاری دنبال این فایل می گردد و سپس در مسیر جاری و سپس در path خودش و اگر پیداش نکرد این پیغام خطا را می دهد.

      در ضمت متلب case sensitive می باشد یعنی حروف یزرگ و کوچک براش فرق دارد. اگر می خواهید تابع درست صدا زده شود ، c کوچک را به C بزرگ تبدیل کنید در دستور مورد نظر.

  50. سلام
    کسی هست که بتونه ارور این m-file رو برطرف کنه
    function [bbox, bbX, faces, bbfaces] = detectFaceParts(detector,X,~)

    if( nargin < 3 )
    thick = 1;
    end

    bbox = step(detector.detector{5}, X);

    bbsize = size(bbox);
    partsNum = zeros(size(bbox,1),1);

    یا این m-file

    function dst = mergeFourPoints(src)

    pos = zeros(size(src,1),2);
    pos(:,1) = mean(src(:,[1,3,5,7]),2);
    pos(:,2) = mean(src(:,[2,4,6,8]),2);

    pos = horzcat(pos,[1:size(src,1)]');

    dst = [];
    while( ~isempty(pos) )
    if( size(pos,1) == 1 )
    dst = vertcat(dst,src(pos(1,3),:));
    pos = [];
    else

    tmp = src(pos(1,3),:);
    rad = norm(pos(1,1:2) – tmp(1,1:2)) + norm(pos(1,1:2) – tmp(1,3:4)) + norm(pos(1,1:2) – tmp(1,5:6)) + norm(pos(1,1:2) – tmp(1,7:8));
    th = rad / 8;

    p = 1;
    for i=2:size(pos,1)
    rad = norm(pos(1,1:2) – pos(i,1:2));
    if( rad 0;
    tmp = sum(tmp) ./ sum(num);
    dst = vertcat(dst,tmp);
    pos(p,:) = [];
    end
    end
    else
    dst = src;
    end
    راهنمایی کنید خیلی ممنون میشم

  51. ایراد برنامه زیر کجاست ممنون از محبتتون
    clc
    clear
    x=linspace(2,5,60);t=0%3;
    for i=1; length(t)
    for j=1;length(x)
    z(j,1)=(e^(-x(j))*sin(t(i))+2*x(j));
    end
    end
    for i=1 ;length(t)
    temp=sprintf(‘t=60xi=t(i)’);
    subplot(2,2,1),plot(x,x(:;i)+i+e|(tem))
    end

    1. ایران متلب

      ایراد برنامه دلایل زیادی میتونه داشته باشد.
      مثلا شما فلوچارت را اشتباه نوشته باشید. این را ما دیگه نمی دونیم شما هستید که هدف از برنامه اتون را می دونید.

  52. Conversion to logical from sym is not possible.
    سلام… اررور بالا در متلب یعنی باید چیکار کنم؟؟
    ممنون از راهنمایی تون

    1. ایران متلب

      سلام
      شما در برنامه دارید از متغییرهای سمبولیک استفاده می کنید. متغییرهای سمبولیک برای بیان یک رابطه ریاضی و بیان فرمول کاربرد دارند.
      شما نمی توانید از آنها به عنوان اندیس استفاده کنید چون عددی داخلشون نیست که بخواد به اندیسی از یک آرایه اشاره کند.
      اگر بخواهید به عنوان عدد استفاده کنید باید نوعش را عوض کنید به double تغییر بدید.

    1. با سلام
      این خطا مربوط به لایسنس license تولباکس شبکه عصبی Neural Network Toolbox می باشد که وقتی متلب متوجه بشود لایسنس مشکل دارد دستورات شبکه عصبی را اجرا نمی کند.

      این دستور را چک کنید :

      license(‘checkout’,’nntool’);

      یا

      “license(‘test’, ‘neural_network_toolbox’)”

      اگر خروجی اینها صفر باشد یعنی متلب مشکل دار نصب شده است.

      در 14 سالی که متلب و شبکه عصبی کار کردم اولین بار این خطا را می بینم. شما یا نسخه قانونی را دانلود کردید و لایسنس براش نخردید ولی با نسخه های قفل شکسته این مشکل وجود ندارد.

  53. باسلام
    ببخشید این ارور را چطوری میشه رفع کرد ، با وجوداینکه بنده co1 را درطول برنامه نویسی تعریف کرده ام ولی نمیشناسد :
    برنامه :
    tic
    clc
    clear all
    format long
    %%
    Node_list=xlsread(‘Book1.xlsx’,’Sheet1′,’A2:A161′);
    Element_list=xlsread(‘Book2.xlsx’,’Sheet1′,’A2:A132′);
    %%
    COORDINATE=xlsread(‘Book1.xlsx’,’Sheet1′,’B2:D161′);
    DIRECT=xlsread(‘Book2.xlsx’,’Sheet1′,’B2:E132′);
    FN=xlsread(‘Book3.xlsx’,’Sheet1′,’D2:D7′);
    A=zeros(160,2);
    for k=1:Node_list
    A(:,1)=COORDINATE(k,1);
    A(:,2)=COORDINATE(k,2);
    end
    thickness=1.5;
    E=30e6;
    P=1500;
    v=.3;
    %%%%%%%

    %%
    K=zeros(2*160);
    D=(E/(1-(v^2)))*[1 v 0;v 1 0;0 0 (1-v)/2];
    N_Gausspoints=4;
    s(1)=1/sqrt(3);t(1)=-1/sqrt(3);w(1)=1;
    s(2)=-1/sqrt(3);t(2)=1/sqrt(3);w(2)=1;
    s(3)=1/sqrt(3);t(3)=-1/sqrt(3);w(3)=1;
    s(4)=1/sqrt(3);t(4)=1/sqrt(3);w(4)=1;
    B=zeros(131,4);
    for n=1:Element_list
    B(:,1)=DIRECT(n,1);
    B(:,2)=DIRECT(n,2);
    B(:,3)=DIRECT(n,3);
    B(:,4)=DIRECT(n,4);
    for p=1:N_Gausspoints
    %a=dy/dt & b=dy/ds & c=dx/ds & d=dx/dt
    a(p)=.25*((Y(co1(n))*(s(p)-1)+(Y(co2(n))*(-1-s(p)))+…
    (Y(co3(n))*(1+s(p)))+(Y(co4(n))*(1-s(p)))));
    b(p)=.25*((Y(co1(n))*(t(p)-1))+(Y(co2(n))*(1-t(p)))+…
    (Y(co3(n))*(1+t(p)))+(Y(co4(n))*(-1-t(p))));
    c(p)=.25*((X(co1(n))*(t(p)-1))+(X(co2(n))*(1-t(p)))+…
    (X(co3(n))*(1+t(p)))+(X(co4(n))*(-1-t(p))));
    d(p)=.25*((X(co1(n))*(s(p)-1))+(X(co2(n))*(-1-s(p)))+…
    (X(co3(n))*(1+s(p)))+(X(co4(n))*(1-s(p))));
    ارور مربوطه:
    Undefined function or variable ‘co1’.

    Error in project2 (line 45)
    a(p)=.25*((Y(co1(n))*(s(p)-1)+(Y(co2(n))*(-1-s(p)))+…
    – متاسفانه من هنگام تعریف کردن توابع هم با مشابه اروربالا مواجه میشم ، باوجوداینکه انهارا در m-file تعریف کردم مثلا :
    Undefined function or variable ‘jacobi’.

    Error in project (line 44)
    (jmatrix=jacobi(ss,tt,x1,y1,x2,y2,x3,y3,x4,y4;

    1. سلام
      پس اینجور که شما می فرمایید متلب دارد اشتباه کار می کند و برنامه درست است؟
      نه نیما خان برنامه مشکل دارد. از اول برنامه تا جایی که co1 را فراخوانی کردید این متغییر تعریف نشده است.

  54. سلام وقتتون بخیر
    من برنامه شبکه عصبی نوشتم که به تنهایی run میشه اما وقتی با الگوریتم pso میخوام وزن هاش رو بهینه کنم برنامه run نمیشه شما میتونید راهنماییم کنید

  55. با سلام و احترام
    وقتی برنامه متلب را باز می کنم با پیام ذیل روبرو می شوم و امکان هیچ کاری را نمی دهد ممنون می شوم اگر راهنمایی بفرمائید.
    Content is not allowed in prolog.
    Could not parse the file: c:\program files\matlab\r2014a\toolbox\control\control\info.xml

    باسپاس

دیدگاه‌ خود را بیان کنید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

+ 9 = eleven