[آموزش] خطاهای رایج در متلب

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فهرست تاپیک:



  1. خطای Matrix dimensions must agree در متلب
  2. خطاهای به شکل کلی Undefined function or method '...' for input arguments of type '###'. در متلب


منبع:kelidestan.com
 
آخرین ویرایش:

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
خطای Matrix dimensions must agree در متلب

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

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

کد:
[LEFT][COLOR=#0000FF][FONT=monospace]clear[/FONT][/COLOR][COLOR=#0000FF][FONT=monospace]all[/FONT][/COLOR]
[COLOR=#0000FF][FONT=monospace]close[/FONT][/COLOR][COLOR=#0000FF][FONT=monospace]all[/FONT][/COLOR]
[COLOR=#0000FF][FONT=monospace]clc[/FONT][/COLOR]

[COLOR=#000000][FONT=monospace]A=[/FONT][/COLOR][COLOR=#3333FF][FONT=monospace]2[/FONT][/COLOR][COLOR=#000000][FONT=monospace];[/FONT][/COLOR]
[COLOR=#000000][FONT=monospace]B=[/FONT][/COLOR][COLOR=#008800][FONT=monospace][[/FONT][/COLOR][COLOR=#3333FF][FONT=monospace]3[/FONT][/COLOR][COLOR=#3333FF][FONT=monospace]5[/FONT][/COLOR][COLOR=#008800][FONT=monospace]][/FONT][/COLOR][COLOR=#000000][FONT=monospace];[/FONT][/COLOR]

[COLOR=#000000][FONT=monospace]C=A/B[/FONT][/COLOR][/LEFT]

نتیجه :


کد:
[LEFT]??? Error using ==> mldivide
Matrix dimensions must agree.


Error in ==> program at 8
C=A/B[/LEFT]

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

کد:
[LEFT]clear all
close all
clc



A=2;
B=[3 5];


C=A./B[/LEFT]


نتیجه :
کد:
[LEFT]C =


    0.6667    0.4000[/LEFT]

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

کد:
[LEFT][COLOR=#0000FF][FONT=monospace]clear[/FONT][/COLOR][COLOR=#0000FF][FONT=monospace]all[/FONT][/COLOR]
[COLOR=#0000FF][FONT=monospace]close[/FONT][/COLOR][COLOR=#0000FF][FONT=monospace]all[/FONT][/COLOR]
[COLOR=#0000FF][FONT=monospace]clc[/FONT][/COLOR]

[COLOR=#000000][FONT=monospace]A=[/FONT][/COLOR][COLOR=#3333FF][FONT=monospace]2[/FONT][/COLOR][COLOR=#000000][FONT=monospace];[/FONT][/COLOR]
[COLOR=#000000][FONT=monospace]B=[/FONT][/COLOR][COLOR=#008800][FONT=monospace][[/FONT][/COLOR][COLOR=#3333FF][FONT=monospace]3[/FONT][/COLOR][COLOR=#3333FF][FONT=monospace]5[/FONT][/COLOR][COLOR=#008800][FONT=monospace]][/FONT][/COLOR][COLOR=#000000][FONT=monospace];[/FONT][/COLOR]

[COLOR=#0000FF][FONT=monospace]for[/FONT][/COLOR][COLOR=#000000][FONT=monospace] nn=[/FONT][/COLOR][COLOR=#3333FF][FONT=monospace]1[/FONT][/COLOR][COLOR=#000000][FONT=monospace]:[/FONT][/COLOR][COLOR=#3333FF][FONT=monospace]2[/FONT][/COLOR]
[COLOR=#000000][FONT=monospace]   C[/FONT][/COLOR][COLOR=#008800][FONT=monospace]([/FONT][/COLOR][COLOR=#000000][FONT=monospace]nn[/FONT][/COLOR][COLOR=#008800][FONT=monospace])[/FONT][/COLOR][COLOR=#000000][FONT=monospace]=A/B[/FONT][/COLOR][COLOR=#008800][FONT=monospace]([/FONT][/COLOR][COLOR=#000000][FONT=monospace]nn[/FONT][/COLOR][COLOR=#008800][FONT=monospace])[/FONT][/COLOR][COLOR=#000000][FONT=monospace];[/FONT][/COLOR]
[COLOR=#0000FF][FONT=monospace]end[/FONT][/COLOR]
[COLOR=#000000][FONT=monospace]C[/FONT][/COLOR][/LEFT]


نتیجه :


کد:
[COLOR=#000000][FONT=monospace]C =[/FONT][/COLOR]

[COLOR=#3333FF][FONT=monospace]0.6667[/FONT][/COLOR][COLOR=#3333FF][FONT=monospace]0.4000[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
خطاهای به شکل کلی Undefined function or method '...' for input arguments of type '###'. در متلب

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

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

کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Undefined [COLOR=#0000FF]function[/COLOR] or method [COLOR=#A020F0]'...'[/COLOR] [COLOR=#0000FF]for[/COLOR] [COLOR=#0000FF]input[/COLOR] arguments of [COLOR=#0000FF]type[/COLOR] [COLOR=#A020F0]'###'[/COLOR].[/FONT][/FONT][/COLOR]

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

کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Undefined [COLOR=#0000FF]function[/COLOR] or method [COLOR=#A020F0]'syms'[/COLOR] [COLOR=#0000FF]for[/COLOR] [COLOR=#0000FF]input[/COLOR] arguments of [COLOR=#0000FF]type[/COLOR] [COLOR=#A020F0]'char'[/COLOR].[/FONT]
[/FONT][/COLOR]

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

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

کد:
[LEFT][COLOR=#0000FF][FONT=monospace]which[/FONT][/COLOR][COLOR=#000000][FONT=monospace] syms[/FONT][/COLOR][/LEFT]

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

کد:
[LEFT][COLOR=#000000][FONT=Tahoma][FONT=monospace]C:\Program Files\MATLAB\R2011a  oolbox\symbolic\symbolic\syms.m[/FONT]
[/FONT][/COLOR][/LEFT]

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

oveis0911

عضو جدید
سلام بر استاید گرامی !!

من جدید یه فایل Slx سیمولینک رو دان کردم ولی فایل روی متلب اجرا نمیشه متلبم 2013a هست اگه میشه راهنمایی بفرمایین!!!!
error.jpg
 
بالا