به آموزشگاه بیاموز خوش آمدید!

سبد خرید (0)

دسترسی و انتشار فایل در متلب

به منظور استفاده ی مجدد از داده ها، ابتدا باید بتوانیم آنها را باز کنیم. در غیر این صورت ذخیره ی داده ها هیچ فایده ای نخواهد داشت. برای اینکه بتوانیم داده های ایجاد شده توسط دیگر برنامه ها را مورد استفاده قرار دهیم، باید بتوانیم آنها را به متلب Import کنیم. همچنین اگر بخواهیم داده های خود را با دیگران به اشتراک بگذاریم، باید آنها را Export کنیم، تا برای دیگر برنامه ها قابل فهم باشند. نرم افزار متلب از Import کردن و Export کردن داده ها کاملا پشتیبانی می کند. 

آموزش باز کردن فایل ها در نرم افزار متلب

 سریع ترین راه برای باز کردن یک فایل در متلب، این است که در پنجره ی Current Folder بر روی آن فایل دابل-کلیک کنیم.  همچنین می توانیم بر روی آن فایل راست-کلیک کنیم و از منوی باز شده، گزینه ی Open را انتخاب کنیم. با انجام این کار، متلب به طور اتوماتیک آن فایل را باز می کند. 

در نرم افزار متلب، به چند طریق می توان فایل های داده را باز کرد. مثلا می توانید بر روی فایل خود راست-کلیک کنید و از منوی باز شده گزینه ی Show in Explorer را انتخاب کنید. بلافاصله پنجره ی Windows Explorer باز می شود و می توانید یک برنامه جایگزین را انتخاب کنید. در عکس 4.11 فایل FirstScript.m توسط یک برنامه باز شده است:

با استفاده از دستورات متلب، می توانید کارهای متفاوتی انجام دهید. اقدام پیش فرض برای یک فایل با پسوند mat این است که در متلب load شود، نه اینکه open شود. اما در صورت نیاز می توانید از دستورات متلب استفاده کنید، به صورت زیر:

 

  • ('open('FirstWorkspace,mat
  • ('load('FirstWorkspace.mat

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


 Import کردن داده ها در نرم افزار متلب

متلب به ما امکان می دهد تا داده ها را از بیرون، به داخل این نرم افزار وارد(Import) کنیم. 

برای یادگیری روش Import کردن داده ها در متلب، گام های زیر را انجام دهید:

1. در تب Home در گروه Variable، بر روی Import Data کلیک کنید.

در عکس 4.12 پنجره ی Import Data را مشاهده می کنید. 

2. فایل مورد نظر را انتخاب کنید و سپس بر روی دکمه ی Open کلیک کنید. سپس یک پنجره به شما نشان داده خواهد شد که در آن  می توانید اطلاعات ورودی را تنظیم کنید. عکس زیر، این تنظیمات را نشان می دهد که می توانید آنها را به دلخواه خود تغییر دهید:

 

 3. تنظیمات دلخواه خود را اعمال کنید. 

4. چک کنید که بخش Unimportable Cells هیچ مقداری نداشته باشد. 

5. بر روی دکمه ی Import Selection کلیک کنید. 

خواهید دید که متلب داده ها را Import می کند. شما می توانید انتخاب کنید که به جای اینکه داده ها در Workspace متلب import شوند، بر اساس داده ها، یک اسکریپت یا تابع تولید شود. 

6. پنجره ی Import را ببندید. 

برای اطلاعات بیشتر در زمینه ی انواع فرمت های داده  که متلب آنها Import می کند، به اینجا مراجعه کنید. 

Export کردن داده ها در نرم افزار متلب

با استفاده از دستورات، می توانیم داده ها را در متلب export کنیم. بعنوان مثال اگر بخواهیم اطلاعات درون متغیر ans را در قالب یک فایل CSV، اکسپورت کنیم، باید از دستور (csvwrite('FirstWorkspace.csv',ans استفاده کنیم.در این دستور، عبارت csvwrite یک تابع است و عبارت FirstWorkspace.csv نام فایل را مشخص می کند و مقدار ans نام متغیری است که می خواهیم آن را export کنیم. 

علاوه بر تابع ()csvwrite تابع های دیگری نیز برای export کردن وجود دارند:

  • ()xlswrite : این تابع یک فایل Excel را ایجاد می کند.
  • ()dlmwrite : این تابع یک فایل delimited را ایجاد می کند. 

این دو تابع، بسیار مشابه با تابع ()csvwrite عمل می کنند. 

 


ذخیره کردن کار در متلب

یک کار ضروری در هنگام کار کردن با متلب، ذخیره کردن پروژه است. اگر کار خود را ذخیره نکنید، تمام اطلاعات را از دست خواهید داد. 

ذخیره کردن متغیرها در محیط متلب

با اینکه در فصل 2 فهمیدیم که چگونه تمام Workspace را ذخیره کنیم، اما گاهی اوقات نیاز داریم تا تنها یک متغیر را ذخیره کنیم. برای انجام این کار در محیط متلب، مراحل زیر را دنبال کنید:

1. ابتدا در پنجره ی Workspace، بر روی متغیری که می خواهید ذخیره کنید، راست کلیک کنید و از منوی باز شده  گزینه ی Save As را انتخاب کنید. همان طور که در عکس 4.14 مشاهده می کنید، جعبه ی گفتگوی Save to MAT-File ظاهر خواهد شد:

 

 2. در فیلد File Name یک نام را برای فایل مورد نظر انتخاب کنید.

اگر که می خواهید یک پوشه ی دیگر را انتخاب کنید، می توانید از منوی درختی، یک پوشه ی متفاوت را انتخاب کنید. 

3. حالا بر روی دکمه ی Save کلیک کنید.

خواهید دید که متلب فایل مورد نظر را در پوشه ی مشخص شده ذخیره می کند. 


ذخیره کردن متغیرها با استفاده از دستورات متلب

با استفاده از دستورات متلب، می توانیم متغیرها را در رایانه ذخیره کنیم. به منظور ذخیره کردن متغیرها، کار با دستورات متلب راحت تر از کار با محیط گرافیکی آن است. به منظور ذخیره کردن یک متغیر در متلب، می توانید از دستور ('save('filename استفاده کنید. اگر بخواهید چند متغیر را ذخیره کنید، کافیست آنها را بعد از مقدار filename قرار دهید. بعنوان مثال عبارت ('save('MyData.mat','ans  یک متغیر به نام ans را در یک فایل به نام MyData.mat در فولدر جاری ذخیره می کند.

  در صورتی که می خواهید داده ها در یک فولدر متفاوت ذخیره شوند، می توانید مسیر را نیز مشخص کنید.  بعنوان مثال عبارت ('save('C:\Temp\MyData.mat داده ها را در مسیر C:\Temp  ذخیره می کند. در صورتی که قصد دارید چند متغیر را همزمان ذخیره کنید، می توانید آنها را به وسیله ی کاما از یکدیگر جدا کنید. بعنوان مثال برای ذخیره کردن متغیرهای Var1 و Var2 در فایل MyData.mat باید از عبارت ('save('MyData.mat','Var1','Var2 استفاده کنید. این دستورات خروجی را به فرمت mat، ذخیره می کنند. اما شما می توانید یک فرمت را نیز مشخص کنید. فرمت های قابل قبول را می توانید در اینجا مشاهده نمایید.

 بعنوان مثال برای ذخیره کردن متغیرهای قبلی در فرمت ASCII می توانید از عبارت ('save('MyData.txt','Var1', 'Var2', '-ASCII استفاده کنید.

ذخیره کردن دستورات در محیط متلب

شما نمی توانید دستوراتی که مستقیما در پنجره ی Command  تایپ می کنید را با استفاده از محیط متلب ذخیره کنید. کاری که باید انجام دهید این است که با استفاده از پنجره ی Command History آنها را ذخیره کنید. در فصل 2 از این کتاب، به تشریح نحوه ی ذخیره کردن فرمول ها و دستورات پرداخته شده است. 

ذخیره کردن دستورات با استفاده از دستورات متلب

نرم افزار متلب به ما امکان می دهد تا با استفاده از دستور diary، دستورات را ذخیره کنیم. دستور diary یک دستور ساده است که باید آن را در پنجره ی Command وارد کنیم. بعد ها شما می توانید فایل مورد نظر را بازبینی کنید و درست مانند یک اسکریپت آن را ویرایش کنید.

دستور diary به صورت های زیر نوشته می شود:

  • diary: یک فایل  ایجاد می کند به طوری که نام آن فایل diary است. خروجی آن ASCII است و چون پسوندی ندارد، شما می توانید آن را با هر ادیتوری باز کنید.
  • ('diary('filename : یک فایل  ایجاد می کند که نام آن filename است. شما می توانید به خروجی، یک پسوند m. بدهید. این بدین معنی است که شما می توانید آن را مانند یک اسکریپت در ادیتور متلب باز کنید. این روش بهتر از روش بالا می باشد زیرا کار کردن با فایل خروجی آسان تر است. 
  • diary off: ثبت کردن دستورات را متوقف می کند. بنا براین آنها در فایل مورد نظر ثبت نمی شوند. متوقف ثبت دستورات، به شما امکان می دهد تا به طور آزمایشی دستوراتی را وارد کنید ولی آنها را ذخیره نکنید.
  • diary on: ثبت دستورات را از سر می گیرد.

دیدگاه‌ها  

0 # farkhani 1396-03-15 09:11
با سلام و خسته نباشید
من یک فایل اکسل حاوی تعداد زیادی جدول زیر هم دارم. می خواهم مقادیر یک سلول از هر کدام از جدول ها که در ستونی ثابت و ردیف های مختلف قرار دارند را بوسیله متلب استخراج کنم. میشه راهنمایی بفرمایید
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # احسان عباسی 1396-03-15 12:29
سلام. ممنون از شما.
اگر امکانش هست، فایل اکسل خودتون یا بخشی از اون رو ارسال کنید تا بهتر بتونم راهنمایی کنم. به نظرم لازم هست که یک تابع برای انجام این کار نوشته بشه. جزئیات این تابع رو پس از ارسال فایل توضیح خواهم داد.
لطفا فایل را به آدرس ایمیل بنده به شرح زیر ارسال کنید:
sbaloot@beyamooz.com
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # علی کریمی 1395-12-01 12:25
سلام...ممنون از سایت خوبتون...
میخواستم بپرسم که دستوری هست تو مطلب که اطلاعات یک عکس رو بهمون بده یا نه؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # رضا برجی 1395-10-17 22:28
سلام میخوام فایل متنی اتچ شده رو ویرایش کنم به صورتی که 10 خط اول که یک عدد 1 اولشه و باقیش حروفه حذف شود و باقیش در یک ماتریس قرار بگیره
البته نباید هیچ ویرایش دستی انجام شه حتی در مورد اسم و فرمت فایل.
چون این کد رو در الگوریم ژنتیک و لینک کردن با یک نرم افزار خاص باید مورد استفاده قرار بدم.file:///C:/Users/Hp/Desktop/1_ECL%20test/PUNQS3.RSM
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # احسان عباسی 1395-10-18 10:46
سلام .
تابع مورد نظر رو به دلخواه شما تغییر دادم. می تونید از لینک زیر دانلودش کنید. روش کار هم در زیر نمایش داده شده. اگه مشکلی داشت، همین جا اعلام کنید:
www.beyamooz.com/images/matlab/functions/readMatrix2.zip

مثال:

www.beyamooz.com/images/matlab/functions/f1.png
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # رضا برجی 1395-10-16 19:51
سلام مرسی از راهنمایتون و عذر می خوام که مزاحمتون میشم
این کد درست کار میکنه ولی یک عدد 1 در خط اول فایل متنی وجود داره که کار رو خراب میکنه. یعنی به این صورته:
1
abcbjjkn
ggfhkj
gfjhjh
1 2 3 4
5 6 7 8
9 0 7 8 ,...
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # احسان عباسی 1395-10-16 20:36
سلام خواهش می کنم. این عدد 1 برای من وجود نداره. فکر کنم شما باید فایل متنی خودتون رو با فرمت ANSI ذخیره کنید تا این مشکل برطرف بشه. در ضمن هنگام فراخوانی تابع مورد نظر، اون رو برابر با یک متغیر قرار بدید، تا ماتریس در متغیر ذخیره بشه. اگه باز هم مشکل وجود داشت، از صفحه خودتون یه عکس بگیرید و ارسال کنید.

پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # رضا برجی 1395-10-15 04:56
سلام من نیاز دارم که متلب به صورت اتوماتیک 4 خط اول یک فایل متی رو حذف کنه؟ چون چند خط اولش حروفه و توضیحات و باقیش عدده.باید چکار کنم؟
ممنون میشم اگه پاسخ رو به ایمیل بنده ارسال کنید rezaborji70@gmail.com
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # احسان عباسی 1395-10-15 08:07
سلام
دستور زیر یک فایل متنی رو میخونه و 3 خط اولش رو حذف کرده و باقی رو بصورت یکی یکی در داخل یک آرایه سلولی قرار میده:
a = fopen('code.txt');
C = textscan(a,'%n' ,'headerLines', 3);
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # رضا برجی 1395-10-15 23:07
مرسی ولی من میخوام بعد اینکه 3 خط حذف شد بقیش به همون صورت به صورت یک ماتریس بمونه
ممنون میشم راهنماییم کنید.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # احسان عباسی 1395-10-16 10:26
خواهش می کنم. تابعی برای این کار وجود داره. این تابع رو از لینک زیر دانلود کنید:
www.beyamooz.com/images/matlab/functions/matlab_functions.zip
حالا برای استفاده از این تابع، شما باید دو تا آرگومان بهش بدید. آرگومان اول نام فایل متنی هست. و پارامتر دوم، تعداد خط هایی است که می خواهید از ابتدای فایل متنی حذف بشه. و در آخر ماتریس مورد نظر در یک متغیر ذخیره میشه. بصورت زیر:

g= readMatrix('code.txt',3);

این تابع به درستی کار می کنه.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # زهرا و مریم 1395-08-22 20:31
ممنونم ازتون که وقت گذاشتید. خواهش میکنم
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # زهرا و مریم 1395-08-21 15:17
تابعی که شما نوشتید رو به کار بردم. مشکلی که وجود داره اینه که من در یک حلقه for میخوام همه 32 حرف رو بگیره و تو سلول قرار بده.اما این تابع فقط یک سلول تشکیل میده و فقط اجرای اخر حلقه داخلش میفته.یعنی تصویر 32م.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # احسان عباسی 1395-08-21 17:16
این تابع فقط به منظور ذخیره ماتریس یک عکس در یک آرایه ی سلولی نوشته شده. برای ذخیره ی 32 عکس، باید یا 32 متغیر ایجاد کنید و برای هرکدام از اونها این تابع رو اجرا کنید و یا باید تابع رو گسترش بدید.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # زهرا و مریم 1395-08-21 14:32
بله الان با توضیحاتتون متوجه شدم.
برنامه ما تصویر تمام حروف فارسی رو ذخیره میکنه و بعد یک تصویر از ورودی میگیریم با یک فونت متفاوت از دیتاستمون و برنامه باید تشخیص بده که چه حرفی هست.
ایده ما این هست که ابتدا با استفاده از دستور bwconncomp تعداد ابجکت های تمام حروف رو تشخیص بدیم. بعد 32 حرف در چهارگروه تقسیم میشن براساس تعداد ابجکت ها.(از 1ابجکت تا 4ابجکت) وقتی که تصویر ورودی رو گرفتیم تعداد ابجکت ورودی رو هم محاسبه میکنیم و اگر مثلا2ابجکت داشت فقط با حروفی که 2ابجکتی هستند مقایسه میشه و ماتریس تصویرشون ازهم کم میشه. هر نتیجه ای که تعداد بیت صفر کمتری داشت جواب هست.
حالا با این توضیحات تبدیل کردن ماتریس تصویر به ارایه سلولی میتونه درست باشه؟
اگر ممکنه راهنماییمون کنید.بسیار سپاسگزارم
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # احسان عباسی 1395-08-21 17:20
حقیقتا سطح دانش بنده کمتر از اونی هست که بتونم شما رو بیش از این راهنمایی کنم. بابت این موضوع عذر خواهی بنده رو پذیرا باشید.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # زهرا و مریم 1395-08-20 20:54
خیلی ممنونم از توضیحتون.
ببخشید فکر میکنم متوجه سوال بنده نشدید یا شاید من برنامتون رو خوب نمیفهمم
پروژه ما ذخیره کردن چندتا عکس هست که بعدا تصویر ورودی باید با تک تک این ها مقایسه بشه و یک سری خروجی به ما بده.
سوال ما این هست که این تصاویر رو چجوری ذخیره کنیم؟
متوجه اون 3تا حلقه تودرتو نمیشم:/
خیلی ممنون میشم اگه این سوالمم جواب بدین.خیلی ضروری هست.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # احسان عباسی 1395-08-20 21:12
خواهش می کنم.
شما در کامنت قبلی گفتید که قصد دارید یک تصویر رو با استفاده از dataset ها ذخیره کنید تا دیگه لازم نباشه در دفعات بعدی اون تصویر رو هی ذخیره کنیم. درسته؟ خب یک تصویر در واقع یک ماتریس هست درست می گم؟ خب ما اگه بیاییم این تصویر که از درایه های زیادی تشکیل شده رو در داخل یک آرایه ی سلولی ذخیره کنیم، اونوقت دیگه تصویر ما انگار که ذخیره شده. چرا؟ چون که آرایه های سلولی در متلب مثل پایگاه های داده ی sql عمل می کنند. البته این نظر منه. شاید دارم اشتباه می کنم.
خب این تابعی که من نوشتم کارش اینه که ما یک ماتریس مال یک تصویر رو بهش میدیم و این تابع اون رو در داخل یک آرایه ی سلولی ذخیره می کنه و برای ما برمی گردونه.
حالا اگه میشه کمی بیشتر در مورد پروژه تون توضیح بدید تا اگه اطلاعات بنده یاری کنه، شما رو راهنمایی کنم.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # زهرا و مریم 1395-08-20 15:01
باسلام و خسته نباشید.
ایجاد یک dataset از تصاویر در متلب چگونه هست؟ به طوری که در اجراهای بعدی برنامه، سیو شدن عکس ها تکرار نشه. بار اول دیتاست ایجاد شود و در اجراهای بعدی فقط مورداستفاده قرار گیرد.
متشکرم از پاسخگوییتون.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # احسان عباسی 1395-08-20 18:41
سلام. ممنونم از شما.
استفاده از dataset دیگه داره منقضی میشه و به جای اون توصیه شده که از table استفاده بشه. اما بنده به جای استفاده از table یه تابع ساختم که یک ماتریس رو به این تابع می دهیم، و این تابع اون رو در داخل یک آرایه ی سلولی ذخیره می کنه. به نظرم کار با آرایه ی سلولی خیلی بهتر از تابع table یا dataset باشه. این تابع رو میتونید از لینک زیر دانلود کنید:
http://beyamooz.com/images/matlab/functions/put.m

روش کار بصورت زیر هست:

>> a = imread('rice.png');
>> b = put(a);
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # علیسا 1395-08-16 22:57
سلام وقت بخیر ممنون از مطالب مفیدتون
من یکسری داده با پسوند .pgm درون یک فولدر دارم و باید اونا رو داخل متلب فراخوانی بکنم
خیلی ضروریه
شما میتونید کمکم کنید ؟
ممنون
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # احسان عباسی 1395-08-17 11:05
سلام . برای وارد کردن یک عکس با پسوند pgm. می تونید به صورت زیر عمل کنید:
1. ابتدا از طریق پنجره ی current folder به محلی که این فایل قرار داره بروید.
2. حالا با استفاده از دستور imread اطلاعات عکس مورد نظر رو بخونید، مثل زیر:
a = imread('myImage .pgm');
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن