چرا با خطای Undefined function or variable مواجه میشویم؟
چرا با خطای Undefined function or variable مواجه میشویم؟
خیلی از افرادی که با متلب کدنویسی می کنند با خطاهای زیر مواجه میشوند:
t=x.^2;
plot(x,y)
- شاید هنگام تایپ و پیاده سازی برنامه دچار غلط املایی شده اید. متغیر را بررسی کنید که آیا چنین چیزی در کد لازم بوده یا مثلا بجای a کلید کناری s تایپ شده است.
- متلب به حروف کوچک و بزرگ حساس هست, متغیر a با A بیانگر دو متغیر متفاوت و جدای از هم هست. البته در ورژن های جدید متلب, بصورت هوشمند خطاهای نوشتاری که نزدیک به متغیر قبلی باشد را از کاربر سوال می کنید. مانند:
- همیشه برنامه و ام فایلی که اجرا می کنید باید داخل کارنت فولدر متلب قابل مشاهده باشد. یعنی متلب در مسیر برنامه مورد اجرا باشد. اگر از فانکشن ها استفاده می کنید باید در کنار ام فایل اصلی و داخل یک پوشه قرار گرفته باشند.
در کدنویسی با متلب امکان بخش بندی و تکه تکه کردن کد جهت سهولت در بازخوانی یک بخش از کد در جاهای مختلف شبیه سازی محیا است و باید به صورت یک فانکشن تعریف شوند و در ام فایل اصلی, و هر جایی که نیاز هست همان فانکشن را فراخوانی کرد. اگر این فانکشن در کنار برنامه اصلی قرار نگیرد با خطای Undefined function or variable در متلب مواجه میشویم.
اگر به نرم افزار متلب آشنایی کافی ندارید, میتوانید “آموزش اجرای برنامه متلب” را در سایت متلبی ببینید.
متلب قادر نیست که تشخیص دهد شما یک تابع را تعریف نکرده اید یا یک متغیر را, پس خطا را به صورت کلی بیان می کند و تشخیص آن با شماست.
runpf چیست؟ چرا با خطای runpf مواجه می شویم؟
- گاهی پروژه متلبی را داریم که قبلا تست و اجرا شده بوده و الان با خطای Undefined function or variable مواجه میشویم. بعضی از پروژه ها با استفاده از یک تولباکس آماده متلب قابل اجرا هستن و در نبود آن تولباکس با خطا مواجه میشویم. مثلا در پروژه ای با ارور زیر مواجه شدیم:
??? Undefined function or variable ‹runpf›
با یک جستجوی ساده در گوگل میتوان فهمید که runpf (pf مخفف power flow هست) یکی از دستورات و ام فایلهای داخل تولباکس معروف مت پاور هست. پس آن را دانلود و بر روی متلب خود با استفاده از “آموزش اضافه کردن تولباکس در متلب” نصب می کنیم.
- فراخوانی یک آبجکت بدون اینکه قبلا پارامترهای مورد نظر آن را مشخص کرده باشیم.
- استفاده از فایل mex در متلب و در یک سیستم عاملی که متفاوت با آنچه هست که قبلا تهیه شده است.
- بعضی از مواقع بدون آن که متوجه شده باشیم یک ام فایل از یک پروژه را به صورت یک تولباکس روی متلب نصب کرده ایم و حالا در پروژه جدید خود نیز ام فایلی به همان نام ایجاد کردیم و این باعث اختلال و ایجاد خطا شده است. فقط کافیست از منوی بالای متلب و تب Home روی Set Path کلیک کنیم و در پنجره جدیدی که باز شده روی دکمه Default و بعد Save و Close کلیک کنیم.
یک راه حل ساده تر استفاده از دستور restoredefaultpath هست. با اینکار فقط تولباکس های پیش فرضی که از سوی متورکز روی متلب وجود داشته باقی می ماند و مابقی از لیست حذف میشوند.
اگر تولباکسهای اورجینال متلب را دستکاری کرده اید, با دستور rehash toolboxcache و سپس savepath را بزنید تا کش تولباکس نیز از روی حافظه آپدیت شود.
اگر با توجه به آموزش فوق نتوانستید مشکل را رفع کنید, میتوانید از متخصصین سایت متلبی جهت انجام پروژه متلب خود کمک بگیرید.
یکی از خطاهای رایج در هنگام اجرای برنامه های متلب خطای Out of Memory است که ما در پستی با نام “رفع خطای Out of Memory متلب” مفصلا به آن پرداخته ایم.
لطفا تجربه خود را از برخورد با ارور Undefined function or variable و نحوه رفع آن را در قسمت دیدگاه های همین پست با ما به اشتراک بگذارید.
این مطلب آموزشی توسط سایت متلبی تهیه شده است و کپی آن بدون ذکر منبع مجاز نیست.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.