چرا کد در متلب اجرا نمی شود؟ ( به همراه نمونه عملی)
یکی از مشکلات رایج در میان برنامه نویسان چه مبتدی و چه حرفه ای، عدم اجرای کد در حین انجام پروژه متلب می باشد. این مشکل دلایل متفاوتی دارد، از خطای ساده گرفته تا مسائل پیچیده در محیط اجرای برنامه. در این مقاله سعی داریم بطور کامل به همراه مثال عملی به بررسی این موضوع بپردازیم.
دلایل عدم اجرای کد در متلب:
1.خطای زمان اجرا : کد ابتدا اجرا می شود ولی وسط کار دیگر اجرا نمی شود. مثال: y = 20 / 0
اشتباه تقسیم بر صفر. راه حل: 1- بررسی کردن ورودیها و 2-استفاده کردن از try/except
2.خطای منطقی: این یکی از بدترین خطاهاست. زیرا کد اجرا می شود ولی نتایج اشتباه است. مثال: :if y = 6
به جای == از = استفاده شده که ایراد کار است.
3.خطای نحوی: این مورد یکی از رایج ترین دلایل اجرا نشدن کد می باشد. به مثال روبرو توجه نمایید چون پرانتز بسته نشده اجرا نمی شود: “print("hi Mona
راه حل: بررسی و دقت کردن به علائم، پرانتز، کوتیشن ها و..
4. عدم نصب کتابخانه ها
مثال:
import numpyModuleNotFoundErrorpip install numpy5. اشتباه مسیر فایل: یکی از ایراد های رایج در پروژه هاست. برای مثال: open("data/file.txt")
6. مشکل در ورودی ها : برای مثال بجای عدد رشته وارد شود. داده ناقص است.
7. اشتباه اجرا کردن برنامه: یا فایل اشتباه اجرا می شود یا محیط اشتباه انتخاب شده است.
8. عدم سازگاری نسخه ها: مثلا کد برای Python 3 نوشته شده ولی برروی Python 2 اجرا می شود که عدم سازگاری دو نسخه وجود دارد.
چگونه سریعا مشکل را پیدا کنیم؟
✔ خواندن دقیق ارور
✔ بکار بردن پرینت print(Y)
✔دیباگ گیری
جهت مطالعه بیشتر روی لینک زیر کلیک کرده و به مقاله روبرو مراجعه نمایید: آموزش دیباگ در متلب 👉
نکات اساسی در اجرا نشدن کد در متلب
- تست کردن مرحله ای کد
- استفاده از IDE مناسب
- انجام دادن کامنت گذاری
- استفاده از Git برای کنترل نسخه
نمونه عملی از عدم اجرای کد در متلب:
در کد زیر سعی داریم چیزی را از داده های موجود در ستون های ویژه چندین فایل CSV را بطور همزمان محاسبه نموده تا میانگین داده ها را بدست اوریم. دلیل ایراد این کد در زیر توضیح داده می شود:
;’strDir = ‘/Users/Pathway/Documents/csvfiles
;fnames = dir(strcat(strDir, ‘*.csv’))
;numfids = length(fnames)
;m = zeros(1,numfids)
;u = zeros(1,numfids)
for i = 1:numfids
;f = fopen(strcat(strDir, fnames(i).name))
;X = textscan(fid, ‘%s%f%f%f%f%f%f%f%f’, ‘Delimiter’, ‘,’, ‘HeaderLines’, 47)
;col1 = X(:,3)
;col2 = X(:,4)
;m(i) = (X(70,4) – X(20,4))./(X(70,3) – X(20,3))
D = 20; % M/L
V_d = 100; % Constant Drain Voltage
C_i = 1.5E-8; % Capacitance of Dielectric F/ cm^2
u(i) = (m(i))./(D .* C_i .* V_d); % mobility
;fclose(f)
end
disp(m)
disp(u)
چرا کد بالا کار نمیکند؟ زیرا هیچ فایلی یافت نمیشود.
چرا هیچ فایلی پیدا نمیشود؟ زیرا به جای fullfile از strcat برای اتصال استفاده شده است.
تفاوت در چیست؟ خودتان مشاهده کنید:
strcat(‘mypath\somedir’,’filename.txt’)<<
ans = mypath\somedirfilename.txt
fullfile(‘mypath\somedir’,’filename.txt’)<<
ans = mypath\somedir\filename.txt
پس وقتی که از strcat استفاده می شود، فایل توسط یک کاراکتر جداکننده، از مسیر اصلی فایل جدا می شود. شما یک مسیر ناموجود در فایل ارائه می کنید که برای متلب ناموجود است و نمیتواند فایلی را پیدا کند.
نتیجه گیری
اجرا نشدن کد، مشکلی قابل حل می باشد. با شناخت انواع خطاها و استفاده کردن از دیباگ گیری، در کمترین زمان ممکن میتوان مشکل را حل نمود.
منابع:

