این پست در مورد استفاده از کد C  در یک برنامه ی Matlab است. اینکه چرا چنین چیزی در ابن وبلاگ سروکله اش پیدا می شود اما حداقل سه دلیل دارد:

۱- برداشت من این است که تعداد کسانی که به این وبلاگ سر می زنند و گوشه ای از زندگی شان با Matlab سروکار دارد کم نیست.

۲- زیاد دیده ام که برنامه نویسان Matlab کار از امکان MEX نویسی استفاده نمی کنند. این بند تا چند هفته ی پیش شامل من ِ نویسنده ی این پست هم می شد.

۳- Matlab محیطی است که آدم را به بد کد نوشتن ترغیب می کند. MEX یکی از امکاناتی است که به بهتر شدن کدهای Matlab کمک می کند.

فرض کنید به دلیلی می خواهید این تابع را روی دو ماتریس اعمال کنید،

mex_formula_s.jpg

در کد ضمیمه mex_test.m این عملیات به دو صورت توسط Matlab انجام شده است: روش بد (که از حلقه ی for استفاده می کند) و روش خوب (که از عملیات ماتریسی استفاده می کند). در همین کد تابع fancy_fun هم صدا می شود. این تابع در فایل ضمیمه fancy_func.c تعریف شده است که یک MEX-file است.

در ساده ترین کاربرد، یک تابع MEX تعدادی ماتریس بعنوان ورودی می گیرد و تعدادی ماتریس بعنوان خروجی  بیرون می دهد. با دستکاری fancy_func.c می شود خانواده ی بزرگی از MEX-file ها را پوشش داد.

فایلها را از پایین همین پست دانلود کنید و برای کاربردی که می خواهید تغییرشان بدهید. اگر قضیه راه نیافتاد ایمیل بزنید حرف می زنیم.

منبع