رفع مشکلات متلب در ویندوز7
آموزش متلب کلید

error یا خطا در متلب

خطای Matrix dimensions must agree در متلب :

Image result for errore

خطا Matrix dimensions must agree زمانی نمایش داده می شود که قصد داشته ایم عملیاتی را بر روی دو ماتریس غیر هم اندازه انجام بدهیم، اما آن عملیات نیازمند آن بوده است که اندازه دو ماتریس، برابر باشد.

به مثال زیر توجه کنید :

مثال :

 

clear all
close all
clcA=2;
B=[3 5];C=A/B

نتیجه :

 

??? Error using ==> mldivide
Matrix dimensions must agree.Error in ==> program at 8
C=A/B

دو روش را برای درست عمل کردن کد بالا، معرفی می کنیم :

روش اول (روش ساده تر) : استفاده از علامت نقطه که بیانگر این است که عملگر بعد از آن، برای تک تک عناصر ماتریس، به کار رود.

کدها را به صورت زیر می نویسیم :

 

clear all
close all
clcA=2;
B=[3 5];C=A./B

نتیجه :

 

C =

0.6667    0.4000

روش دوم : استفاده از حلقه for

کدها را به صورت زیر می نویسیم :

 

clear all
close all
clcA=2;
B=[3 5];for nn=1:2
C(nn)=A/B(nn);
end
C

نتیجه :

 

C =

0.6667    0.4000

خطاهای به شکل کلی Undefined function or method ‘…’ for input arguments of type ‘###’. در متلب :

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

Undefined function or method ‘…’ for input arguments of type ‘###’.

که در عبارت فوق، به جای علامت های … ، نام یک تابع و به جای علامت های ### ، نام یک نوع متغیر نوشته می شود. به عنوان مثال :

Undefined function or method ‘syms’ for input arguments of type ‘char’.

معمولا این پیام خطا به دو دلیل به وجود می آید :

اول اینکه ممکن است که تابع (function) مورد نظر درون مسیر (path) یا مسیرهای تعریف شده برای نرم افزار متلب نباشد و بنابراین راه حل این است که فولدر حاوی آن تابع را به مسیرها اضافه کنید یا current folder را به آدرس آن فولدر حاوی تابع، تغییر دهید. در این مورد، بد نیست نگاهی به کلید زیر بیندازید :
کلید شماره 177دوم اینکه ممکن است آن تابع یک تابع داخلی نرم افزار متلب باشد و به دلیل قدیمی بودن شماره نرم افزار متلب شما، این تابع را نداشته باشید. توصیه این است که یک شماره جدید نرم افزار متلب را نصب کنید، اما اگه عجله دارید می توانید از دوستی که یک شماره جدید متلب را دارد بخواهید که فایل مربوط به آن تابع داخلی را برایتان ارسال کند. مثلا فرض کنید که شما تابع syms را نداشته باشید، دوست شما باید عبارت زیر را در نرم افزار متلب خود اجرا کند تا مسیر فایل مربوط به تابع syms نمایش داده شود :

which syms

مثلا نتیجه می تواند به صورت زیر باشد :

C:\Program Files\MATLAB\R2011a  oolbox\symbolic\symbolic\syms.m

بنابراین سپس دوست شما این فایل با نام syms.m را برایتان ارسال می کند و همچنین آدرس را هم به شما می گوید تا بدانید که فایل را در چه بخشی از فولدر محل نصب نرم افزار متلب باید کپی کنید.

 

 

سعید عربعامری
من سعید عربعامری نویسنده کتاب 28 گام موثر در فتح متلب مدرس کشوری متلب و سیمولینک و کارشناس ارشد مهندسی برق قدرتم . بعد از اینکه دیدم سایتهای متعدد یک مجموعه کامل آموزش متلب و سیمولینک ندارند به فکر راه اندازی این مجموعه شدم
http://sim-power.ir

18 پاسخ به “error یا خطا در متلب

  1. Index exceeds matrix dimensions.
    Error in (line 8)
    txt2 = txt(2:end,3);
    نمیدونم چرا این خطا رو میده. لطفا کمکم کنید.ممنون

    [filename, pathname] = uigetfile(‘*.xlsx’, ‘Select file for load’);
    Fileselect = fullfile(pathname, filename);
    [num, txt] = xlsread(Fileselect);

    [r, c] = size(num);

    dif = num(:,2) – num(:,1);
    txt2 = txt(2:end,3);

    i = 1 ;
    for n=1:r-1
    if strcmp(txt2(i),txt2(i+1)) == 1
    if dif(i)<= dif(i+1)
    num(i,:) = [];
    txt(i+1,:) = [];
    txt2(i,:) = [];
    dif(i,:) = [];
    else
    num(i+1,:) = [];
    txt(i+2,:) = [];
    txt2(i+1,:) = [];
    dif(i+1,:) = [];
    end
    i = i-1;
    end
    i = i+1;
    end

    newname = strcat('converted ',filename);
    nFileselect = fullfile(pathname, newname);
    xlswrite(nFileselect,txt(1,:))
    xlswrite(nFileselect,num,1,'A2')
    xlswrite(nFileselect,txt(2:end,3),1,'C2')

  2. function f = fanning_friction_factor(Re)
    % combined, continuous correlation for the fanning friction factor.
    % the alpha parameter is chosen to provide the desired smoothness.
    % The transition region is about +- 4*alpha. The value 450 was
    % selected to reasonably match the shape of the correlation
    % function provided by Morrison (see last section of this file)
    sigma = 1./(1+exp(-(Re – 3000)/450));
    f = (1-sigma).*fF_laminar(Re) + sigma.*fF_turbulent(Re);

    end

    Re = linspace(500,10000);
    f = fanning_friction_factor(Re);

    figure(1);
    plot(Re,f)
    xlabel(‘Re’)
    ylabel(‘f_F’)
    legend ‘laminar’ ‘turbulent’ ‘smooth transition’

    رور زیر رومیده که نمیدونم چیه
    >> fanning_friction_factor(Re)
    Undefined function or variable ‘Re’.
    ا

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

  4. Error using Main (line 15)
    Error due to multiple causes.

    Caused by:
    Error using Main (line 15)
    Invalid setting for output port dimensions of ‘VSWT_NSSFE/Variable Speed Wind Turbine/Mux1’. The dimensions are
    being set to 1. This is not valid because the total number of input and output elements are not the same
    Error using Main (line 15)
    Error in port widths or dimensions. Input port 1 of ‘VSWT_NSSFE/Variable Speed Wind Turbine/Ta calculator’ is a one
    dimensional vector with 1 elements.
    باسلام من موقه اجرای فایلم این ارور رو مشاهده میکنم ولی نمیدونم مشکلش چیه.خطا هم روی قسمت mux سیمولینک هس که نمیدونم چیکارش کنم. ممنون میشم راهنماییم کنین.باتشکر از لطفتون

  5. سلام خسته نباشید
    برنامه ام اروری به این صورت میده
    Index exceeds matrix dimensions.

    Error in nporoje (line 101)
    x=stat2(i).Image;
    که قادر به رفعش نیستم و برنامم جواب نمیده ممنون میشم راهنماییم کنید

      1. %% biron keshidan karakterha
        stat1 = regionprops(bwlabel(pz,4),’Area’,’Image’);
        index1 = (find([stat1.Area] == max([stat1.Area])));
        maxarea =[stat1(index1).Area];
        pzc=bwareaopen(pz,maxarea-200);
        %%
        % nf1=temp.*cx{1,i};
        % nf2=sum(sum(nf1));
        % nf(j)=nf2/(sum(sum(temp)));
        % mx=max(nf(j));
        %%
        stat2=regionprops(pzc,’Area’,’BoundingBox’,’Image’,’Orientation’,’Centroid’);
        cx=cell(1,8);
        for i=1:8
        x=stat2(i).Image;
        rx=imresize(x, [60 30]);
        %figure,imshow(rx)
        cx{1,i}=rx;
        fx=mat2gray(cx{1,1});
        imshow(cx{1,2});
        imwrite(rx,[‘D:\poroje\ans\javab’ num2str(i) ‘.jpg’]);% ADDRESS NEVESHTAN KARAKTER HA
        end
        تا قبل از این قسمت برنامه به راحتی اجرا میشود ولی در این قسمت به ارور برخورد میکنم

  6. سلام من یه برنامه دارم که موقع اجرا این پیام میاد . همه ی گزینه هارم امتحان کردم اما برنامه ران نمیشه لطفا کمک کنید . مرسی
    matlab editor
    matlab can not run this file beacuse
    c:\…lab\r2010a\toolbox\matlab….
    change the matlab current or add its folder to the matlab path
    change folder \add path\cancel\help

  7. سلام خدا قوت
    ببخشید برنامه ام خطایی باعنوان:
    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. سلام هر چی ک هست از دستور evalfismex هستش ک در خط 84 ازش استفاده کردید برای چی از این دستور استفاده کردید؟آیا ساختار این دستور درست هستش و همه ورودی های این دستور به درستی وارد شدند؟

دیدگاهتان را بنویسید

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