چند مطلب در باب متلب

این سوال‌ها رو گرفته بودم و گفتم بذارم اینجا که هم شاید به درد یکی بخوره و هم شاید کسی چیز خوبی اضافه کنه.

مستقیم میرم سر اصل موضوع ، میخواستم نظرت رو در مورد Matlab بدونم (با توجه به اینکه مخابرات هم خوندی)

۱- متلب چیه ؟
۲- میشه یه زبون برنامه نویسی هم حسابش کرد ؟
۳- یه نرم افزار ریاضیه و نه چیزی بیشتر ؟
۴- آیا متلب یه مفسره ؟
۵- چه کارای جدی ای باهاش کردی ؟
۶- تو بیرون از دانشگاه و آزمایشگاه ، کاربردی دیدی ازش ؟
۷- تو دوستان و اطرافیان کسی رو دیدی که توش متخصص باشه و یا کارش مرتبط باشه ؟

خب من بهترین آدم برای جواب دادن به این نیستم و شاید حتی در تخصصم هم نباشه.. ولی سعی ام رو می کنم (:

متلب چیه ؟

اینطور که ویکیپدیا می گه متلب یه زبون نسل چهارم است یعنی زبونی که دقیقا درست شده تا بشه باهاش به یک منظور خاص به راحتی برنامه نوشت – اونم با سطح ابسترکشنی بالاتر از زبون های نسل قبل. متلب درست شد تا بتونه با ماتریس ها به خوبی کار کنه و اطلاعات و توابع رو رسم کنه. معلومه که مثل هر زبون دیگه می شه باهاش یوزر اینترفیس هم درست کرد و کلی کار دیگه ولی تمرکز روز کار و نمایش ماتریس ها و توابع است. چون می شد متلب رو به زبون های دیگه وصل کرد، این زبون بسیار محبوب شد بخصوص در دنیای مهندسی که کلی کار ماتریسی داشتن ولی نمی خواستن بشینن با پوینترهای سی سر و کله بزنن (:

میشه یه زبون برنامه نویسی هم حسابش کرد ؟

بله بدون شک. درسته که برای نوشتن وب سرور زبان خوبی نیست ولی حلقه داره و متغیر و .. چی دارم می گم؟ زبون برنامه نویسی نسل چهار است دیگه (:

یه نرم افزار ریاضیه و نه چیزی بیشتر ؟

نه دیگه.. این سوال ها ظاهرا تکراری هستن. یک زبان برنامه نویسی است با کلی بسته جانبی برای محاسبات و اینها که می شه باهاش گویی و همه چیز هم نوشت ولی تمرکزش روی کارهای ماتریسی است.

آیا متلب یه مفسره ؟

نمی دونم.. اگر بخوام حدس الکی بزنم می گم مفسر است ولی امکان کمپایل هم داره (: کسی می دونه جواب درست رو؟

چه کارای جدی ای باهاش کردی ؟

فکر کنم هیچچی. در حد دانشجویی و گاهی برای پیچوندن یک نمودار که قرار بود سریع کشیده بشه. مشکل اینه که در لینوکس حداقل اون موقع که نسخه درستی نبود و اگر اشتباه نکنم تو ویندوز هم قفل شکسته بود و من زیاد طرفش نرفتم – حتی یامه یکبار توی آزمایشگاه کنترل مشقم رو ننوشتم و گفتم متلب برنامه دزدی تحت ویندوز است و من باهاش کار نمی کنم (: دلیل واقعی تنبلی بود. این سال ها من کارهای مشابه رو با R انجام می‌دم.

تو بیرون از دانشگاه و آزمایشگاه ، کاربردی دیدی ازش ؟

حتما داره ولی حوزه تخصصی من نیست.

تو دوستان و اطرافیان کسی رو دیدی که توش متخصص باشه و یا کارش مرتبط باشه ؟

من نه. اما دلیلش اینه که نه کار مخابرات می کنم نه ریاضیات نه تحقیق علمی (: دوستان کامنت می ذارن اگر باشن. من که نیستم (:

  • محمد

    این که تو دانشگاه و آزمایشگاه کارآمده خودش خیلی عالیه. البته الان تو محیط‌های علمی هم R طرفدارای زیادی پیدا کرده. البته من به شخصه sage رو ترجیح می‌دم. اگه ندیدینش حتما امتحانش کنید.

  • شهروز

    من از متلب برای نوشتن مقالات و انجام پروژه های زیادی کمک گرفتم و میگیرم. محیط کد نویسی اون به شدت مشابه محیط C یا بهتر بگیم C++ هست و اگه کسی بتونه به C کار کنه قطعا توی محیط کدینگ اون مشکل خاصی نداره. قسمت شبیه سازی سیمولینک اون و toolbox های مختلف و متنوعی که در موضوعات مختلف مهندسی بهش اضافه شده این نرم افزار رو به شدت هیجان انگیز کرده. میشه گفت متلب یه برنامه اوپن سورس محسوب میشه که مثلا توی وبسایت
    mathworks.com تعداد زیادی پروژه ها و افزونه های آماده شده توسط گیگ های متلب رو پیدا کرد که خیلی هم مفید و کارردی هستن. این سایت خیلی خوبه دوستان علاقه مند به متلب حتما استفاده کنن، فقط توضیح اینکه متاسفانه این سایت با ای پی ایران باز نمیشه و پیگیری ها و مکاتبات ایمیلی من هم به جایی نرسید و جواب دادن که سیاست های کلی ما اینجوری ایجاب میکنه :(

    • mehdi

      c کجا محیط داره که متلب شبیه اش باشه! c رو اول می نویسیم بعد compile می کنم ولی متلب مثل محیط ipython هر چیزی رو می نویسیم نتیجه رو نشون میده.(مفسر) البته compile هم میشه.
      برنامه متلب هم که سورس بسته هستش!

  • سحر

    واقعا فکر می‌کنید هیییییچ کار جدی‌ای نمی‌شه باهاش کرد؟ از بچه‌های ژئوفیزیک بگیرنش این علم منقرض می‌شه تقریبا. من خودم سی می‌نویسم اما استاد من دو تا مقاله‌ی نیچر داده با شبیه‌سازی توی متلب. کلی هم solver داره و مخصوصا برای کسایی که نمی‌خوان وقت زیادی پای یادگیری برنامه‌نویسی بذارن ولی برنامه بنویسن مناسبه. البته خوب گرونه. من ترجیح می‌دم از بدل اوپن سورسش استفاده کنم octave.

  • تیمور

    برای کارهای جدی‌تر نسخه ASL MATLAB بهتره، ولی خوب گرون‌تر هم هست, ولی خوشبختانه ASL MATLAB نسخه دانشجویی با ایمیل رسمی دانشگاه رو داره.

  • فراز

    تمرکزش روی عملیات ماتریسیه ولی این کارو صدها برابر کندتر از سی‌پلاس‌پلاس انجام میده :))

  • علی

    توی قوی بودن متلب شکی نیست همون طور که توی کند بودنش :)
    ولی برای محسابات کار با توابع و … GNU octave یا ساینتیفیک پایتون هست که به نظرم قدرتمند تره

  • برای یادگیری متلب یکی از بهترین سایتها (که نمونه انگلیسیشم من ندیدم) سایت http://www.matlabsite.com هست که هم رو خود الگوریتم ها کار میکنه و هم پیاده سازیشون تو متلب.

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

  • manoochd

    MATLAB برنامه رفرنس عملیات ریاضی‌ هست، منظور از رفرنس اینکه همه به عنوان یک استاندارد قبولش دارند، مثل حالتی که مایکروسافت آفیس برای کارهای افیسی داره، مثلا خیلی‌ از کتاب‌های سیگنال پروسسینگ بخش برنامه نویسی رو با MATLAB انجام میدن. در عالم مهندسی‌، تقریبا کاری نیست که نشه با MATLAB انجام داد، بسته به اینکه چقدر وقت برای یک پروژه هست می‌شه از A تا Z رو MATLAB نوشت و انجام داد، از محاسبات اولیه تا Visualization و تحلیل نتایج. خارج دانشگاه هم بسیار دیدم ازش استفاده بشه، ولی‌ کّل قضیه بیشتر سلیقه مهندس یا محقق یا کارمند یا هر چی‌ که اسمش رو می‌گذارید هست، یک شرکت اهدافی داره، و براش مهم نیست شما از چی‌ استفاده می‌کنید برای تحقق‌ اون هدف، مثلا اینکه از شما انتظار هست ایمیل رو جواب بدید، اینکه از کلاینت استفاده می‌کنید یا بروزر برای کسی‌ مهم نیست. تجربه شخصی‌ من از یک شرکت بزرگ مثل Ford اینکه یک لیست بلند بالا از software دارند که شرکت به صورت سالیانه قبلان خریده و شما به عنوان مهندس فقط باید سفارش بدید که مسئول IT رو computer نصب بکنه. من خودم قبلا تو دانشگاه خیلی‌ ازش استفاده می‌کردم، تا روزی که دانشگاه دیگر لایسنس تحقیقاتی‌ نخرید و فقط لایسنس آموزشی بود، اون هم واسه کلاس‌های درسی‌ مثل ریاضی‌ پیشرفته و … من هم مثل jadi از سافت‌ور غیر قانونی‌ خوشم نمیاد، رفتم دنبال جایگزین و خیلی‌ وقته که با Octave و Python کارم رو انجام میدم

  • صابر

    سلام. من چون سالهاست که با Matlab کد مینویسم گفتم که کامنت بزارم.
    1- ظاهرش با جاواست و هسته اصلی با c++ نوشته شده
    2- به دلیل بالا تونستن به لینوکس و مک پورتش کنن و هر نسخه ویندوزیش دقیقا مشابه لینوکس هم داره
    3- زبان m که برای برنامه نویسی استفاده میشه یه زبان مفسری هست اما میشه اون رو کامپایل کرد و matlab compiler این کار رو انجام میده. اینکار سرعت اجرا برنامه رو تا چند برابر بیشتر میکنه. این کار رو با دستور me انجام میدن
    4- برای سیستم های 32 بیتی از کامپایلر che خودش به اسم lcاستفاده میکنه اما برای سیستم های 64 بیتی چون خودش کامپایلر نداره از کامپایلر visual studio استفاده میکنه. در لینوکس از gcc استفاده میشه.
    5- قابلیت خوبی که در نسخه های اخیر اضافه شده قابلیت تبدیل الگوریتم نوشته شده به کد خالص و قابل حمل c است.
    6- با ابزارهایی که در اختیار قرار میده میشه کد نوشته شده رو به کتابخانه های. Net و Com و dll و کد اجرایی تبدیل کرد
    7-کتابخانه های متنوع داره به طوری که از برخورد دو کهکشان تا تکامل در سطح مولکولی رو میشه شبیه سازی کرد. عملا برخی از رشته های دانشگاهی بدون این نرم افزار منقرض میشن
    8- نسخه ی اصلی با تمام لیسانس ها بیشتر از 24 هزار دلار قیمت داره
    9- بهترین ابزار حرفه ای و جایگزینش Python با کتابخانه های خیلی خوبی مثل matplotlib, scope, number و… هست‌ که افراد زیادی دارن به این سمت مهاجرت میکنند.
    10- یک نرم افزار نیمه اپن سورس هست. به این معنی که سورس خیلی از توابع خود matlab قابل مشاهده است اما سورس کرنل و برخی توابع حیاتی مثل دترمینان قابل مشاهده نیست.
    11- جدیدا یک ابزار static code analyzer برای کد c خروجی اضافه شده که توانایی خوبی برای رفع باگ کدهای c داره.
    12- ابزارها و درایورهایی درsimulink برای ارتباط با دستگاه های خارجی به صورت مستقیم داره.
    13- دو نرم افزار رقیب به نام Mathematica و Maple داره
    14- matlab از هسته ی Maple برای محاسبات سمبولیک استفاده میکنه
    اگه کمکی خواستین در خدمت هستم.

    • محمدرضا

      جناب آقای صابر متشکرم به خاطر اطلاعات ارزشمندتون.
      آقا اگه می شه تلفن یا ایمیلی از خودتون به مابدین که بتونم چند تا سوال در باره ی مطلب بپرسم.
      ایمیل من :
      bunzy دات mr ات ساین جی میل دات کام هست.(bunzy.mr)
      متشکرم

  • شاهد

    برای یه سری کارای خیلی تخصصی یا اساساً برای بعضی تخصص‌ها، مثلِ اون دوستمون که گفته ژئوفیزیک، گاهی وقتا متلب تنها گزینه است. یعنی اگه شما بخوای با یه زبانِ جنرال همون کارها رو انجام بدی باید همه‌ی چرخ‌ها و میخ‌ها و پیچ‌ها رو از اول اختراع کنی، کاری که، گذشته از زمانِ زیادی که لازم داره، عقلانی هم نیست. برای بعضی کارها معادل‌های آزادِ خوبی وجود داره، مثلِ همون R که خودِ جادی اشاره کرد. و برای کارهای جنرال‌تر داره رقبای خوبی پیدا می‌کنه، مثلاً کلی کتابخونه‌ی آزاد و قوی توی پایتان داره توسعه داده می‌شه. مثلِ numPy و غیره. من با دو تا رقیبِ نزدیکش کار نکردم، Gnu Octave که فقط روی گنو/لینوکس اه، و SciLab که برای ویندوز هم هست.

    کامپایل هم میشه. خودش یه جعبه‌ابزارِ کامپایلر داره. اما فایلِ نهایی‌ش خیلی غول‌آسا در میاد. دلیلش این اه که متلب متن‌بسته است، و باید یه فایلِ خیلی بزرگ به نامِ Matlab Runtime که توابعِ و جعبه‌ابزارهای متلب رو اجرا می‌کنه، با فایلِ اجراییِ برنامه‌ی موردِ نظر پکیج بشه.

    در نهایت جوابِ این سوال‌ها روشن اه به نظرِ من:
    یا شما داری یه کارِ تخصصی انجام می‌دی که شاید برای اون کارِ شما گزینه‌ی دیگه‌ای جز متلب وجود نداشته باشه.
    یا داری یه کارِ جنرال انجام می‌دی که با زبان‌های برنامه‌نویسیِ دیگه هم قابل‌اجرا ست. در این صورت تجربه‌ی شخصیِ من می‌گه که به هیچ وجه سراغِ متلب نرو. من برای یه پروژه با این ذهنیت که برنامه‌نویسی بلد نیستم و متلب خیلی ساده است و این‌ها رفتم کارم رو با متلب پیاده‌سازی کنم. بعد از یه مدت که گذشت به این نتیجه رسیدم که اگه از همون اول رفته بودم یه زبانِ‌ قدرتمند رو یاد گرفته بودم هم از نظرِ زمانی خیلی فرقی با شرایطِ فعلی‌ش نمی‌کرد. تازه اون طوری مهارتی به دست آورده بودم که می‌شد توسعه‌ش داد و خیلی جاهای دیگه هم ازش بهره گرفت. گاهی متلب بعضی جاها خنگ‌بازی در میاره و به دلیلِ سورسِ بسته‌ش به هر دری که می‌زنی آخرش هم نمی‌فهمی که داری از کجا می‌خوری (: سرِ آخر هم مجبور می‌شی اساساً ماجرا رو دور بزنی یا راه‌حل‌ت رو عوض کنی. زمانِ زیادی رو صرف کردی و در ازاش چیزی به دانشِ برنامه‌نویسی‌ت اضافه نشده، صرفاً یه ترفند برای برنامه‌نویسی توی متلب گیر آوردی که اون هم معلوم نیست همه جا جواب بده، چون تو دلیلِ اصلیِ مشکل رو متوجه نشدی. ضمنِ این که متلب هم ممکن اه توی ورژن‌های بعدی‌ش بعضی پیاده‌سازی‌ها رو تغییر بده که دوباره همه چی ری‌ست می‌شه.

  • شهریار
  • علی

    به نظر من اصلا کار درستی نیست که بخوایم متلب رو با C و یا پایتون و حتی Octave مقایسه کنیم. بزرگترین مزیت متلب که انقدر محبوبش کرده داشتن محیط شبیه ساز Simulink و تعداد زیادی Toolbox تخصصی هست. تفاوت دیگه ی متلب با سایر بسته های مشابه امکان پشتیبانی از تعداد زیادی سخت افزار هستش، از raspberry pi گرفته تا بوردهای data acquisition. لیست کامل همه ی این سخت افزارهای اینجاست: http://www.mathworks.com/hardware-support/home.html

    تعداد زیادی از شرکتها هم که تجهیزات ازمایشگاهی برای دانشگاه ها و مراکز تحقیقاتی میسازن با Mathworks همکاری میکنن که تجهیزاتشون پشتیبانی بشه. اینجا هم میتونین لیست کاملی از شرکتهایی که از بسته ی متلب استفاده میکنن رو ببینید. از Boeing و Airbus گرفته تا Broadcom و Xerox و ازمایشگاه های متفاوتی در NASA.
    http://www.mathworks.com/company/user_stories/industry.html

    پیشنهاد میکنم این ویدیو رو ببینید تا بهتر متوجه بشید چرا صنایع هوافضا و روباتیک انقدر به متلب نیاز دارن و براشون حیاتی هست:
    http://www.mathworks.com/videos/what-is-simulation-73224.html?type=shadow

  • یادش بخیر جادی. زمان دانشجویی که دیمر ساخته بودم که از پورت سریال وصل میشد و با متلب کنترل میشد (:
    فک کن نور لامپو با یه اسکرول‌بار از تو ویندوز کم و زیاد کنی. یا اینکه بهش تابع سینوسی و دندانه‌اره‌ای بدی …

  • رضا

    اینو ببینین
    مثلا با این کد ساده میتونینممان اینرسی یک جسم دوبعدی رو حساب کنین
    clc
    clf

    disp(”);

    nn=input(‘Please enter the number of points for your profile: ‘);clc;
    m=input(‘Please enter the mass of profile(kg): ‘);
    p=zeros(nn,2);
    figure(1);axis([-1 1 -1 1]);grid minor
    clc;disp(‘please draw your profile in this figure’)
    for n=1:nn
    p(n,:)=ginput(1);
    clc;sprintf(‘point#:(%d)’,n)
    hold on
    plot(p(n,1),p(n,2),’*’)
    axis([-1 1 -1 1])
    grid
    end
    x=p(:,1);y=p(:,2);
    fill(x,y,’b’)
    n=length(p);
    p=[p zeros(n,1)];
    N=0
    for ii=1:n-1
    N=N+norm(cross(p(ii+1,:),p(ii,:)))*(dot(p(ii+1,:),p(ii+1,:))+dot(p(ii+1,:),p(ii,:))+dot(p(ii,:),p(ii,:)));
    end
    D=0
    for ii=1:n-1
    D=D+norm(cross(p(ii+1,:),p(ii,:)));
    end
    l=(m/6)*N/D;
    clc;sprintf(‘The moment of lnertia is (%d) kg*m^2’,l)

    با متلب یک نقاشی هم کشیدم.اما انقدر زشت شده که گفتم بهتره آبروی خودمو نبرم :) خلاصه متلب حتی میتونه براتون یک وسیله سرگرمی باشه.مثل هر زبان دیگه ای و اینو بگم که کلی تو دنیا کارای مهمی باهاش انجام میدن.از تحلیل صوت گرفته تا طراحی و … مثلا میتونین نرم افزار ADAMS رو به متلب وصل کنین و کلی کارای تحلیلی باحال روی خودرو انجام بدین.

  • محبت

    ببخشید یک سوال بی ربط، من همیشه GUI رو جی یو آی میخوندم، ولی دیدم شما نوشتید گویی! حالا کدوم تلفظش درسته؟!

    • جادی

      قانون که نداره… من هر دو رو شنیدم و خودم با گویی راحت ترم ولی جی – یو – آی هم می گن.

  • rox

    سلام

    من یه مشکل معنوی دارم :(

    همچون زبان های برنامه نویسی کار افرادی مثل من رو که مثلا با c++ یک الگوریتم رو پیاده سازی می‌کنیم زیر سوال می بره.
    من ساعت ها وقت می‌زارم ولی دوستم سر ۱ ساعت برنامش آمادس و کار من جلو استاد جلوه ای نداره.

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

    باید چه کار کرد ؟ من هم برم از همون محصولات استفاده کنم ؟ کار من درسته که این ورم ؟ اون ها خوب می‌کنن؟ (به عنوان مقایسه من با emacs کار و gcc اون ها با ویزوال استودیو (شاید مثال خوبی نباشه ))

    کاش یه جلسه تهران لاگ به عنوان بحث آزاد در این مورد می بود.

    • جادی

      خب بستگی به هدف داره. مثلا اگر هدف فقط معکوس کردن یک ماتریس است بدون شک متلب راه حل بهتری است برای کلاس درسی. اگر هدف اینه که یک شاتل فضایی ماتریسی رو معکوس کنه معلومه که سی کد بهتری است چون بهینه تره. اگر هدف حرفه ای شدن در برنامه نویسی است بازم سی بهتره چون بیشتر به شما چیز یاد می ده و … اگر هدف استاد اینه که ببینه چقدر برای برنامه نویسی سختی کشیدی، سی بنویسی بهتره ولی اگر هدفش اینه که توان معکوس کردن یک ماتریس رو داشته باشی، متلب گزینه بهتری است. کاملا بستگی به هدف داره (: سعی نکن معلم ها رو خوشحال کنی بلکه سعی کن مسیری رو بری که می رسه به جایی که می خوای (:

      • rox

        آخه بحث سر اینه که من نمره هم لازم دارم زمانی که بقیه باش تجزیه چالسکی یا رانگ کوتا رو تو یک ساعت می‌نویسن و من با c++ هنوز دارم ور می رم. از طرفی دوس هم دارم چیز یاد بگیرم و با c++ بنویسم.

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

        پ.ن : راستی متلب خیلی هم کند نیست. اگر بنچمارک ها رو نگاه کنی می‌بینی که در خیلی از موارد از c حتی بهتره. مثلا ضرب ماتریس های گنده.

        • rox

          من رفرنس اصلیم رو پیدا نکردم ولی این رو ببین :

          http://stackoverflow.com/questions/18593341/matlab-vs-c-speed-comparison-in-this-code

        • جادی

          در مورد مایکروسافت مثل هر چیز دیگه بحث اینه که «چه ابزاری برای چه کاری». خب اگر می خوای سریع یک برنامه بنویسی که حسابداری یک مغازه رو بکنه و خیلی هم سریع تموم بشه و هر کسی هم بتونه توسعه اش رو ادامه بده و مهم هم نیست اگر گاهی کرش کنه یا پنجره ای نشون بده که توش باید Dont Send Repord رو زد و بعد دوباره برنامه رو اجرا کرد و روی جزییاتش هم کنترل چندانی نداشته باشی ، شاید واقعا ویژوال بیسیک انتخاب خوبی باشه (: ولی اگر بخوای خیلی قرص و محکمتر باشه احتمالا باید بری سراغ مثلا ویژوال سی یا اصولا سی پلاس پلاس و اگر بخوای بکنی اش یک سیستم تحت وب که به عنوان SaaS بفروشی به شرکت های بزرگ احتمالا مجبور می شی مثلا بری سراغ پایتون یا نود. صحبت اینه که کجای بازار می خوای واستی (:

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

          • rox

            مثال اسمبلی و c خیلی خوب بود.
            خوب حالا سوال معنویم میشه این که اگه من سختی بکشم و با این تیپ برنامه‌نویسی کنم کجا می‌تونم کار کنم ؟ بازار من رو می‌خواد ؟ پول کمتر می‌ده؟ بیشتر می ده ؟

            • ToX

              عزیزم ببین دو تا فکت هست:
              ۱. با متلب کد نوشتن یا بنا شدن سواد زیادی نمی‌خواد و فرد باسوادی نمیشی…
              ۲. کار کردن با متلب یا ازونور بنائي کردن با .NET خیلی راحتتر هست

              نتیجه: کدوم یک ازیندو واسط مهمتره؟ آیا مجبوری حتما و حتما یکی ازین دوتا رو دنبال کنی و لاغیر؟‌ یا نه می‌تونی در جائي ازون و در جائي دیگر ازین استفاده کنی؟ اگه به این بینش برسی و بتونی به خوبی تشخیص بدی و از هر ابزار در جای درستش استفاده کنه بهترین حالت هست. من اگه می‌بود برای یادگیری سراغ زیر و بم برنامه‌نویسی و ماشین می‌رفتم و کلی چیز یاد می‌گرفتم ازون ور هم واسه ۴ تا تکلیف انجام دادن اگر تسلطم به سی/سی++ اونقدر نیست خب سریع کار رو با همون متلب انجام میدادم…

              ۳. دانستن چندین زبان و چندین پلتفرم خیلی خوبه…درسته مثل زبان گفتاری هست هرچه بیشتر بلد باشی مغزت بیشتر باز میشه :دی
              ۴. متعصب نباش

  • fcd

    سلام جادی
    نمیدونم چرا به اون سوال ِ “چه کارای جدی ای باهاش کردی ؟” انقدر سطحی جواب دادی؟!

    فکر نکنم دلیل “چون نرم افزار آزادی نیست پس به در نمیخوره” دلیل درستی باشه. یا “فقط برای کشیدن نمودار های الکی” دلیل ساخت این زبان برنامه نویسی باشه.

    متلب در رشته برق بسیار زیاد در تحلیل سیگنال و مباحث مرتبط استفاده میشه.

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

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

    در شبکه های عصبی و مباحث مشترک با هوش مصنوعی و یادگیری ماشینی مبتنی بر شبکه عصبی استفاده زیادی ازش میشه.

    در بیولوژی، از شبیه سازی گرفته تا تحلیل داده و آنالیز خیلی کاربرد داره و استفاده میشه.

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

    • جادی

      خب چون من باهاش کار جدی نکردم به جز پروژه های درسی دانشگاه (: به همین خاطر هم اینجا نوشتم که دوستان دیگه ای که باهاش کار جدی کردن بگن. سوال این نبود که «چه کارهای جدی ای می شه باهاش کرد» بلکه این بود که «تو باهاش چیکار کردی؟» که خب جوابش تقریبا اینه که «هیچچی(:»

  • fcd

    راستی جادی جان متلب یک زبان مفسری است ولی از تقریبا دو سه سال پیش قابلیت JIT : Just in time compilation بهش اضافه شد. که هنوز هم در حال توسعه است و بصورت دیفالت روی نسخه های جدید فعال شده. یعنی برای حلقه ها و خیلی از توابع بصورت خودکار کامپایل درجا صورت میگیره.

    البته توی متلب میشه دستور feature accel off رو اجرا کرد و قابلیت JIT رو خاموش کرد و متلب رو تبدیل کرد به یک زبان کاملا مفسری.

  • توی درس یادگیری ماشین (هر چیزی که ربطی به جبر خطی و کار با ماتریس‌ها باشه) خیلی استفاده میشه. ایشون که یکی از اساتید مطرح یادگیری ماشینه توی کلاسش از Octave استفاده می‌کنه که معادل متن باز متلبه.

  • نگار

    متلب توی هوش مصنوعی و رباتیک هم کاربرد داره. ۴سال پیش من رباتی دیدم که با یه وبکم توی نمایشگاه قدم می‌زد! و مسترش به‌طور ریموت با متلب کنترلش می‌کرد٬ کارایی شبیه گرفتن مختصات مکان حاضر و دادن مختصات مسیر یا مقصد…
    احتمالاً همین کار رو با سی هم میتونست انجام بده٬ ولی شاید متلب ویژوال‌تر (!) بوده. نمی دونم.

  • حسین

    به همه این کاربردها ، پردازش تصویر و بینایی ماشین رو هم اضافه کنید .
    تو این حوزه ها فقط دو تا اسم وجود داره Matlab و openCV .
    هرچند تو ماهیت با هم تفاوت دارن اما متلب تو این حوزه هم حرفهای زیادی برای گفتن داره .
    تو متلب میشه با دو خط ، Face Detection انجام داد !

  • عرفان

    با توجه به این که یه زبون برنامه نویسی سطح بالاست و اکثریت به راحتی میتونن باهاش کد بزنن ،
    پس یعنی تسلط به متلب یه تخصص به حساب نمیاد ؟
    اصلا کسی که به متلب تخصص داره رو میشه یه برنامه نویس دونست ؟

  • در تمام مداخل مهندسی از برق و الکترونیک و مکانیک استفاده داره. بدلیل اینکه میشه سیستم رو تعریف کرد و در قالب سر فصلهای کنترل ازش بهره برد.
    مثلا در طراحی ASIC در مرحله اولیه که میخواهیم کارا بودن کل یک طراحی رو بررسی کنیم یا جایی که باید سیستم در دومین فرکانس بررسی کنیم و روی تایم دومین زیاد نمیشه حرفی زد، کاری که ما دو سه برابر باید در cadence یا spice برای رئیایستیک کردن محسبات اولیه روی کاغذ انجام بدیم رو صرف بررسی سیستم توسط مدلهایی که برای متلب مینوسیم میکنیم، تقریبا چند ساعت در متلب میگذرونیم و سیستم رو اونجا طراحی میکنیم المان‌های غیرخطی و غیره ایده‌ال رو اضافه میکنیم و نتیجه رو بررسی میکنیم.
    در نهایت اکثرا میشه از سیستم یه سری اعداد و ضرایبی بدست آورد که اسکیل کردن اونها در طراحی در behavioral level یا مستقیما در transistor level کار رو به نسبت خیلی سریع میکنه که این روند هم مثلا با توجه به چند مشخصه دیگه که برای طراحی در نظر گرفتیم و یک initial point که بدست داده امکان پذیر میشه.
    اصولا هرجا که نیاز به فهم کلی از سیستم باشه یا وقتی میخواهیم یه محاسبات اولیه فراگیر کنیم که با دست انجام شدنی نیست و یا میخواهیم مطمئن شیم با محدودیت‌هامون شدنی است یا نه سراغ مطلب میریم!
    در حقیقت متلب یک ماشین حساب قوی که به معنی که تمام محاسبات ریاضی رو میشه درش انجام داد و وقتی خوب بخواهیم چیزی بسازیم لازم میشه اما این هیچوقت به این معنی نیست که متلب تمام محاسبات رو انجام میتونه بده. گاهی وقتی که برای مدل کردن سیستم‌های خاص باید گذشت اینقدر زیاد هست که طراح مستقیما به استفاده از HDL رو میاره و از اونجا فرایند طراحی‌اش رو شروع میکنه.
    در نهایت یه تجربه قدیمی میگه هرچی رو با متلب حساب کردید و یا مدل کردید پاک نکنید و نگاه دارید چون داشتنش بهتر از نداشتن‌اش هست و اگر یکبار کلی وقت صرفش کردید حیف دفعه بعد بخواهید از اول اینکار رو بکنید یا بخاطر کمبود وقت بخواهید بیخیالش بشید.

  • ft

    توی اینکه متلب چقدر کاربرد داره حرفی نیست اصولا برای هر چیزی که بشه به آنالیز عددی ربطش داد میشه از متلب استفاده کرد و این یعنی تمام مدل سازی های ریاضی از علوم زیستی تا مکانیکی…پس فقط به درس و دانشگاه و محیط ازمایشگاهی اختصاص نداره…من کسی و میشناسم که همیشه عقیده اش این بود پولی که از برنامه نویسی با متلب در میگیره چندین برابره هزینه ای هست که برای تدریس یا استفاده از تخصصش توی موارد دیگه بهش میدنه…و این یعنی اگه بازارش و خوب بشناسید بازار کار هم داره…
    اونقدر ها که بچه گفتند کند نیست کاملا بستگی به نوع استفاده داره, البته قابل ذکره توی بعضی موارد به خاطر اینکه الگوریتم های خوبی برای تقریب زدن بعضی از روشهای ریاضی داره خیلی خیلی سریع تر و بهتر از نوشتن کد توی زبانهای دیگه عمل میکنه…
    توی ورژن های جدیدش قابلیت های خیلی خیلی خیلی خوبی بهش اضافه شده…
    و به طور تجربی هم میتوانم بگم ورژن لینوکسیش سرعت بیشتری داره(نمیدونم چرا؟!)…
    از نظر من مهمترین نقطه ضعفش اینکه اوپن سورس نیست, این موضوع توی کارهای عددی سطح بالا وقتی نمیدونید با چه روشی تقریب زده و میزان خطاتون دقیقا چقدره مشکل سازه..

    البته اگه از متلب خوشتون نمیاد, میتوانید از متمتیکا , ساینتفیک پایتون و …. استفاده کنید.

  • Reza

    نگاه شخصی من به این قضیه : فقط و فقط به این بستگی داره که شما چی کار میخواهید انجام بدید! متلب ی برنامه / زبان / نرم افزار ( هر چی اسمش رو بزاریم ) هست که کاملا تخصصی هست و ی شرکت بسیار بزرگ اونو منتشر کرده و همچنان هم آپدیت میکنه. این کار هم معلومه که ی هزینه سنگین داره و خب اون شرکت هم قیمت زیادی رو بابت متلب طلب میکنه. تخصصی هم معنیش این نیست که فقط میشه باهاش آپولو هوا کرد, نه ی منحنی ساده سینوس رو هم بخواهید بکشید, کار رو به نحو عالی انجام میده. متلب به خاطر توابع بیشماری که داره واقعن کار رو راحت میکنه, این باز هم به این مربوطه که اون کار چی هست !! مثال ساده رسم توابع سه بعدی هست که تو این زمینه متلب واقعن غنی هست .

    ی حسن بزرگ متلب تعداد بسیار زیاد افرادی هست که ازش استفاده میکنند, شما هر مشکلی داشته باشید احتمالا آدمهای دیگه هم داشتند و میتونید پیدا کنید. یا اینکه توی فروم ها سوال میزارید و ملت کار بلد جواب می دهند .

    توی آلمان تا جاییش که من مستقیم برخورد کردم و شنیدم, بیرون از دانشگاه وقتی میپرسند که شبیه سازی بلدی منظور با متلب هست !! متلب برنامه اول و آخر مهندسی هست , برای کارای دیگه مثل فیزیک هم بسیار قوی هست اما بیشتر آدمها تو فیزیک از برنامه های متن باز استفاده میکنند که نیازی هم به هزینه نیست. پایتون ی جایگزین / رقیب بسیار بسیار مدرن برای متلب هست این روزها به خصوص که متن باز هست. حالا توی پایتون مثلا مردم اومدند و matplotlib رو نوشتند که نه تنها متن باز هست که همون غنای گرافیک مطلب رو داره و برای هرگونه رسمی واقعن بی نظیره! اگه میخواهید فقط ی برنامه برا رسم هرگونه داده یاد بگیرید, برد سراغش و هرگز دیگه به چیزی نیاز نخواهید داشت!

    خلاصه کلام: ببینید چی کار لازم دارید انجام بدید, بعد ببینید که چی برای اون کار مناسبتره. نه اینکه متلب رو یاد بگیرید که حالا براش کار جور کنیم!

  • تیرما

    با متلب کار می کردم تا اینکه مجله ای مقاله ارشدم، ISI، را برای چاپ پذیرفت گفت باید لایسنس ارایه کنی و گروه هم زد زیرش و گفت به ما ربطی نداره! 3 ماه طول کشید تا کد رو برای سایلب تمیز کردم (که گویا به اکتاو زمان کمتری می برد) و بعد مجله قبول نکرد و گفتند که فقط متلب! اما خوشبختانه در یک جای بهتری موفق شدم چاپ کنم. از اون موقع تا حالا سه چهار سالی میشه که برای خودم و هم به عنوان شغل (روی پروژه های دیگران) با این نرم افزارها سر و کله میزنم. دانشی از علم کامپیوتر که بتونه در مورد سوالهای پایه ای این پست کمک کنه دیدگاهی بذارم ندارم. اما این رو می دونم که اخیرا روال کار کمی تغییر کرده. همونطوری که متلب ایجاد شد تا کاری خاص رو بهتر انجام بده، جدیدا در علوم مختلف (به خصوص فیزیک که به من مربوطه یا من به اون مربوطم) این روند داره لایه لایه تر و خاص تر و خاص تر و خاص تر میشه. برای کاری که من در پروژه ارشدم با متلب انجام دادم امروز نرم افزارهای (یا زبانهای) برنامه نویسی تخصصی تری وجود دارند که سریعتر و با خروجی هدفمندتر نسبت به متلب از پس اون کار بر می آیند. شاید این ها خودشون زاده متلب باشند و یا نباشند اما نکته کلی اینه که متلب و یا Maple در علوم تخصصی دارند حکم زبان C رو نسبت به بچه هاش پیدا میکنند.

    اما خوب به تجربه خودم، اگر برگردم و قرار باشه چیزی انتخاب کنم که بقیه عمرم رو صرف تسلط در اون کنم، ترجیح میدم اون زبان Julia و یا j باشه!

  • مهدی

    برای کارهای پردازش تصویر و بینایی ماشین هم استفاده می شه
    من کاربرد شو بیشتر توی سیستم های ALPR یا پلاک خوان خودرویی دیدم البته با c++ هم میشه این کار رو انجام داد.

  • من اصلا حرفه ای کار نکردم با هیچ زبان و برنامه ای اما پارسال جو گیر شده بودم می خواستم یه سیستم تشخیص صوت بسازم یکی حرفه ای بهم پیشنهاد کرد که برای پردازش صوت api های متلب رو استفاده کنم. من اون سیستم رو نساختم اما با متلب یکمی کار کردم و نسبتا خوشم اومد.

  • فرهاد

    من خودم متخصص کد نوشتن متلب نیستم و سیمولینک کار میکنم، که البته توش زیاد بلاک های کوچیک متلب یا اس فانکشن میذارم. اما در مورد استفاده، یکی از مواردی که توی شرکت ما بسیار ازش استفاده می شه، reconstruction تصویر هست. یعنی این که دتکتورهای ما سیگنال الکترونیکی رو به صورت ماتریکس های بسیار بزرگ (چند بعدی) به کامپیوتری که مسوولیت ایجاد تصویر گرافیکی داره انتقال میده، و بعد پردازش و اصلاح اون رو برنامه هایی انجام می ده که تیم نرم افزار با متلب، سی و پایتون نوشته. گمونم image processing رو بشه یه استفاده ی تیپیکال از متلب دونست. یکی دیگه از موارد استفاده اش توی دستگاههای ما هم برنامه نویسی برای کالیبراسیون دستگاه هست که پارامترهای مختلف دتکتورها خونده می شه و بعد از پردازش خروجی، هم گزارش گرافیکی برای مطالعه ایجاد می شه و هم پارامترها توی لوپ بسته اصلاح میشه. اینجا هم ماهیت ماتریکسی چینش دتکتورها سبب میشه متلب دم دست تر باشه برای استفاده.

    منظورم از نوشتن همه ی اینها (مبهم بود، نه؟) این بود که متلب کاملن در صنعت کاربرد داره و اصلن تفننی یا دانشگاهی صرف نیست.

    • شاهد

      فرهاد جان می‌شه لطفاً بگی شرکتِ شما کارش چیه؟ اگه ممکنه البته.

      • فرهاد

        Medical Devices
        اون بخش خاصی که من کار میکنم، طراحی این ها هست: http://en.wikipedia.org/wiki/PET-CT

        • شاهد

          سپاس از پاسخت.
          من چند تا سوال داشتم، ممنون می‌شم اگه لطف کنی ایمیلت رو بدی تا روی ایمیل ازت بپرسم.
          ایمیلِ من اینه:
          sh.ahmadian روی جیمیل.
          قبلاً ممنون.

  • محسن

    در مورد سوال پنجم (چه کارای جدی ای باهاش کردی؟) لازم میدونم تجربه شخصیم رو اینجا بگم:

    اول از همه باید کار جدی رو یکم باز کنیم؛ اگه با فرضیات روتین جلو بریم و کار جدی رو برای مثال طراحی و پیاده سازی یک سایت ASP.net یا PHP که تهش پول کم دردسر (البته به نسبت کارهای تحقیقاتی) داشته باشه در نظرم بگیریم که باید گفت: “متلب چی هست اصن؟!”
    ولی اگه کار جدی رو یکم وسیع تر از کارهای معول تو حوزه برنامه نویسی (بالاخص تو ایران) ببینیم، من خودم 6 سال پیش تجربه کار با این نرم افزار ریاضی و آمار رو داشتم؛ من برای یک کار تحقیقاتی نیاز به یک سری محاسبات ریاضی داشتم که مهمترینش محاسبه SVD – Singular Value Decomposition یک ماتریس بود که برای من صرف نمیکرد تا برم از صفر محاسبه چنین چیزی رو تو نرم افزارم که با C# نوشته بودم پیاده سازی کنم، در نتیحه از engine متلب در نرم افزار خودم استفاده کردم و براحتی و با استفاده از فراخونی توابع ریاضیش نتیجه مورد نظر رو بدست می آوردم. البته همون موقع کتابخونه ها و چیزهای Open Source دیگه ای هم تو اینترنت بود، ولی به نظرم اومد که استفاده از engine متلب در اون زمان برای من راحت تر بود و وقتم رو برای اصل کاری که محاسبه SVD شابد یک هزارم اون الگورینم بود صرف کردم و نتیجه خوبی هم گرفتم.

  • محسن

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

  • متلب ایران (وب سایت آموزش تخصصی نرم افزار متلب) را به دوستان خود معرفی کنید
    http://matlabiran.ir
    https://www.facebook.com/matlabiran

  • Pingback: پاسخ : آرچ تی وی; ویدئوکست‌هایی درباره‌ی آرچ لینوکس به زبان پارسی (قسمت پنجم اضافه شد) – من خوشحالم()