دسترسی و انتشار فایل در متلب
به منظور استفاده ی مجدد از داده ها، ابتدا باید بتوانیم آنها را باز کنیم. در غیر این صورت ذخیره ی داده ها هیچ فایده ای نخواهد داشت. برای اینکه بتوانیم داده های ایجاد شده توسط دیگر برنامه ها را مورد استفاده قرار دهیم، باید بتوانیم آنها را به متلب 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 را ببندید.
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: ثبت دستورات را از سر می گیرد.
- نوشته شده توسط احسان عباسی
- بازدید: 46023
دیدگاهها
سلام وقت بخير ميخواستم بدونم امكان ارتباط نرم افزار متلب با spss هست يا خير ميخوام از spss به عنوان دي تا ست استفاده كنم و بدمش به متلب
سلام. متاسفانه در مورد spss اطلاعات چندانی ندارم.
سلام..خسته نباشین..دوستان من میخام ی ماتریس 10000*10000رو ذخیره کنم از متلب برای استفاده در یک محیط دیگ..ولی اکسل . نت پد نمی تونن اینکاررو برام انجام بدن..میش راهنماییم کنین؟
سلام. ممنون از شما
منظورتون اینه که یک ماتریس 10000 در 10000 توی متلب ایجاد کردید و حالا می خواهید از این ماتریس در یک برنامه ی دیگه استفاده کنید؟ برای انجام این کار می تونید ماتریس رو با استفاده از مثال زیر به فرمت csv در بیاورید:
>> a = [1:9]
a =
1 2 3 4 5 6 7 8 9
>> csvwrite('ExportedData1.c sv',a)
>>
عبارت ExportedData1.c sv نام فایلی است که می خواهید اطلاعات در آن ذخیره شود. و a نیز ماتریس ما است.
در همین زمینه می توانید مقاله ی زیر رو مطالعه کنید:
beyamooz.com/matlab-for-dummies/593-matlab-chapter11/6018-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-export-%DA%A9%D8%B1%D8%AF%D9%86-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7-%D8%AF%D8%B1-%D9%85%D8%AA%D9%84%D8%A8
با سلام من ی فایل متنی دارم که با دستور textscan اطلاعات اون رو میخونم.اما مشکلی که هست فضای خالی اول هر خط رو نمیخونه ومن میخوام که فضاهای خالی رو بخونه و هر کدوم رو یک کاراکتر بحساب بیاره.لطفا منو راهنمایی کنید.ممنون
سلام.
فایل خودتون رو به ایمیل زیر ارسال کنید تا مورد بررسی قرار گیرد:
[email protected]
سلام چطوری میتونم اطلاعات یه برنامه روذخیره کنم یه قسمت بایدهرباراجرابش ه ومقدارداده هاذخیره بشه برای مرحله بعد؟
سلام. کافیه هر بار که می خواهید اطلاعات رو ذخیره کنید، از تب Home در متلب، بر روی گزینه ی Save Workspace کلیک کنید و workspace رو در کامپیوتر خودتون ذخیره کنید. حالا هر وقت اون رو توی متلب باز کنید، اطلاعات ذخیره شده برمی گردد.
با سلام و خسته نباشید
من یک فایل اکسل حاوی تعداد زیادی جدول زیر هم دارم. می خواهم مقادیر یک سلول از هر کدام از جدول ها که در ستونی ثابت و ردیف های مختلف قرار دارند را بوسیله متلب استخراج کنم. میشه راهنمایی بفرمایید
سلام. ممنون از شما.
اگر امکانش هست، فایل اکسل خودتون یا بخشی از اون رو ارسال کنید تا بهتر بتونم راهنمایی کنم. به نظرم لازم هست که یک تابع برای انجام این کار نوشته بشه. جزئیات این تابع رو پس از ارسال فایل توضیح خواهم داد.
لطفا فایل را به آدرس ایمیل بنده به شرح زیر ارسال کنید:
[email protected]
سلام...ممنون از سایت خوبتون...
میخواستم بپرسم که دستوری هست تو مطلب که اطلاعات یک عکس رو بهمون بده یا نه؟
سلام.
بله این مقاله رو مطالعه کنید:
www.beyamooz.com/matlab-for-dummies/600-morphology-fundamentals/4970-%D8%AE%D9%88%D8%A7%D9%86%D8%AF%D9%86-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7%DB%8C-%D8%B9%DA%A9%D8%B3-%D8%AF%D8%B1-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1
سلام میخوام فایل متنی اتچ شده رو ویرایش کنم به صورتی که 10 خط اول که یک عدد 1 اولشه و باقیش حروفه حذف شود و باقیش در یک ماتریس قرار بگیره
البته نباید هیچ ویرایش دستی انجام شه حتی در مورد اسم و فرمت فایل.
چون این کد رو در الگوریم ژنتیک و لینک کردن با یک نرم افزار خاص باید مورد استفاده قرار بدم.
سلام .
تابع مورد نظر رو به دلخواه شما تغییر دادم. می تونید از لینک زیر دانلودش کنید. روش کار هم در زیر نمایش داده شده. اگه مشکلی داشت، همین جا اعلام کنید:
www.beyamooz.com/images/matlab/functions/readMatrix2.zip
مثال:
www.beyamooz.com/images/matlab/functions/f1.png
سلام مرسی از راهنمایتون و عذر می خوام که مزاحمتون میشم
این کد درست کار میکنه ولی یک عدد 1 در خط اول فایل متنی وجود داره که کار رو خراب میکنه. یعنی به این صورته:
1
abcbjjkn
ggfhkj
gfjhjh
1 2 3 4
5 6 7 8
9 0 7 8 ,...
سلام خواهش می کنم. این عدد 1 برای من وجود نداره. فکر کنم شما باید فایل متنی خودتون رو با فرمت ANSI ذخیره کنید تا این مشکل برطرف بشه. در ضمن هنگام فراخوانی تابع مورد نظر، اون رو برابر با یک متغیر قرار بدید، تا ماتریس در متغیر ذخیره بشه. اگه باز هم مشکل وجود داشت، از صفحه خودتون یه عکس بگیرید و ارسال کنید.
سلام من نیاز دارم که متلب به صورت اتوماتیک 4 خط اول یک فایل متی رو حذف کنه؟ چون چند خط اولش حروفه و توضیحات و باقیش عدده.باید چکار کنم؟
ممنون میشم اگه پاسخ رو به ایمیل بنده ارسال کنید [email protected]
سلام
دستور زیر یک فایل متنی رو میخونه و 3 خط اولش رو حذف کرده و باقی رو بصورت یکی یکی در داخل یک آرایه سلولی قرار میده:
a = fopen('code.txt');
C = textscan(a,'%n' ,'headerLines', 3);
مرسی ولی من میخوام بعد اینکه 3 خط حذف شد بقیش به همون صورت به صورت یک ماتریس بمونه
ممنون میشم راهنماییم کنید.
خواهش می کنم. تابعی برای این کار وجود داره. این تابع رو از لینک زیر دانلود کنید:
www.beyamooz.com/images/matlab/functions/matlab_functions.zip
حالا برای استفاده از این تابع، شما باید دو تا آرگومان بهش بدید. آرگومان اول نام فایل متنی هست. و پارامتر دوم، تعداد خط هایی است که می خواهید از ابتدای فایل متنی حذف بشه. و در آخر ماتریس مورد نظر در یک متغیر ذخیره میشه. بصورت زیر:
g= readMatrix('code.txt',3);
این تابع به درستی کار می کنه.
ممنونم ازتون که وقت گذاشتید. خواهش میکنم
تابعی که شما نوشتید رو به کار بردم. مشکلی که وجود داره اینه که من در یک حلقه for میخوام همه 32 حرف رو بگیره و تو سلول قرار بده.اما این تابع فقط یک سلول تشکیل میده و فقط اجرای اخر حلقه داخلش میفته.یعنی تصویر 32م.
این تابع فقط به منظور ذخیره ماتریس یک عکس در یک آرایه ی سلولی نوشته شده. برای ذخیره ی 32 عکس، باید یا 32 متغیر ایجاد کنید و برای هرکدام از اونها این تابع رو اجرا کنید و یا باید تابع رو گسترش بدید.
بله الان با توضیحاتتون متوجه شدم.
برنامه ما تصویر تمام حروف فارسی رو ذخیره میکنه و بعد یک تصویر از ورودی میگیریم با یک فونت متفاوت از دیتاستمون و برنامه باید تشخیص بده که چه حرفی هست.
ایده ما این هست که ابتدا با استفاده از دستور bwconncomp تعداد ابجکت های تمام حروف رو تشخیص بدیم. بعد 32 حرف در چهارگروه تقسیم میشن براساس تعداد ابجکت ها.(از 1ابجکت تا 4ابجکت) وقتی که تصویر ورودی رو گرفتیم تعداد ابجکت ورودی رو هم محاسبه میکنیم و اگر مثلا2ابجکت داشت فقط با حروفی که 2ابجکتی هستند مقایسه میشه و ماتریس تصویرشون ازهم کم میشه. هر نتیجه ای که تعداد بیت صفر کمتری داشت جواب هست.
حالا با این توضیحات تبدیل کردن ماتریس تصویر به ارایه سلولی میتونه درست باشه؟
اگر ممکنه راهنماییمون کنید.بسیار سپاسگزارم
حقیقتا سطح دانش بنده کمتر از اونی هست که بتونم شما رو بیش از این راهنمایی کنم. بابت این موضوع عذر خواهی بنده رو پذیرا باشید.
خیلی ممنونم از توضیحتون.
ببخشید فکر میکنم متوجه سوال بنده نشدید یا شاید من برنامتون رو خوب نمیفهمم
پروژه ما ذخیره کردن چندتا عکس هست که بعدا تصویر ورودی باید با تک تک این ها مقایسه بشه و یک سری خروجی به ما بده.
سوال ما این هست که این تصاویر رو چجوری ذخیره کنیم؟
متوجه اون 3تا حلقه تودرتو نمیشم:/
خیلی ممنون میشم اگه این سوالمم جواب بدین.خیلی ضروری هست.
خواهش می کنم.
شما در کامنت قبلی گفتید که قصد دارید یک تصویر رو با استفاده از dataset ها ذخیره کنید تا دیگه لازم نباشه در دفعات بعدی اون تصویر رو هی ذخیره کنیم. درسته؟ خب یک تصویر در واقع یک ماتریس هست درست می گم؟ خب ما اگه بیاییم این تصویر که از درایه های زیادی تشکیل شده رو در داخل یک آرایه ی سلولی ذخیره کنیم، اونوقت دیگه تصویر ما انگار که ذخیره شده. چرا؟ چون که آرایه های سلولی در متلب مثل پایگاه های داده ی sql عمل می کنند. البته این نظر منه. شاید دارم اشتباه می کنم.
خب این تابعی که من نوشتم کارش اینه که ما یک ماتریس مال یک تصویر رو بهش میدیم و این تابع اون رو در داخل یک آرایه ی سلولی ذخیره می کنه و برای ما برمی گردونه.
حالا اگه میشه کمی بیشتر در مورد پروژه تون توضیح بدید تا اگه اطلاعات بنده یاری کنه، شما رو راهنمایی کنم.
باسلام و خسته نباشید.
ایجاد یک dataset از تصاویر در متلب چگونه هست؟ به طوری که در اجراهای بعدی برنامه، سیو شدن عکس ها تکرار نشه. بار اول دیتاست ایجاد شود و در اجراهای بعدی فقط مورداستفاده قرار گیرد.
متشکرم از پاسخگوییتون.
سلام. ممنونم از شما.
استفاده از dataset دیگه داره منقضی میشه و به جای اون توصیه شده که از table استفاده بشه. اما بنده به جای استفاده از table یه تابع ساختم که یک ماتریس رو به این تابع می دهیم، و این تابع اون رو در داخل یک آرایه ی سلولی ذخیره می کنه. به نظرم کار با آرایه ی سلولی خیلی بهتر از تابع table یا dataset باشه. این تابع رو میتونید از لینک زیر دانلود کنید:
beyamooz.com/images/matlab/functions/put.m
روش کار بصورت زیر هست:
>> a = imread('rice.png');
>> b = put(a);
سلام وقت بخیر ممنون از مطالب مفیدتون
من یکسری داده با پسوند .pgm درون یک فولدر دارم و باید اونا رو داخل متلب فراخوانی بکنم
خیلی ضروریه
شما میتونید کمکم کنید ؟
ممنون
سلام . برای وارد کردن یک عکس با پسوند pgm. می تونید به صورت زیر عمل کنید:
1. ابتدا از طریق پنجره ی current folder به محلی که این فایل قرار داره بروید.
2. حالا با استفاده از دستور imread اطلاعات عکس مورد نظر رو بخونید، مثل زیر:
a = imread('myImage .pgm');