نوشتن اطلاعات (عناصر) یک ماتریس، در یک فایل متنی، با دستور dlmwrite ، در متلب (MATLAB)
دستور dlmwrite در متلب (MATLAB)، برای نوشتن اطلاعات (عناصر) یک ماتریس، در یک فایل متنی (با فرمت ASCII) به کار می رود.
در دستور dlmwrite ، باید نام فایل متنی که می خواهیم اطلاعات در آن ذخیره شود (اگر فایل وجود ندارد، ساخته می شود) و همچنین نام ماتریسی که می خواهیم اطلاعات (عناصر) آن در فایل متنی ذخیره شود را ذکر کنیم. به عنوان مثال :
در کد بالا، نام فایل متنی را برابر kelidestan.txt و نام ماتریس را برابر A در نظر گرفته ایم.
همچنین موارد زیر را نیز می توانیم تعیین کنیم، که آنها را در ادامه همین کلید آموزشی، شرح خواهیم داد :
1- علامتی که بین عناصر ماتریس قرار می گیرد (در فایل متنی)
2- فایل متنی، بازنویسی شود (پاک شدن اطلاعات قبلی آن) یا اینکه اطلاعات در ادامه اطلاعات قبلی آن نوشته شود
3- تعداد رقم اعشار اعداد
4- به اندازه چند ستون (Column) و ردیف (Row) از فایل متنی را خالی بگذاریم (فقط درج علامتی که بین عناصر قرار می گیرد)
5- ایجاد پایان خط (Line terminator) (رفتن به خط بعدی) بعد از درج اطلاعات هر ردیف از ماتریس
به مثال زیر توجه کنید :
3 خط اول کدها برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
نتیجه :
اگر فایلی با نام kelidestan.txt وجود ندارد، این فایل متنی ساخته می شود و سپس محتوای زیر در فایل مورد نظر نوشته می شود (فایل های txt را با خود نرم افزار متلب نیز می توانید باز کنید) :
تغییر علامت پیش فرض (علامت ,) قرار گرفته در بین عنصرهای ماتریس در فایل متنی :
همان طور که در مثال قبل مشاهده کردید، علامت , به عنوان علامت پیش فرض در بین عنصرهای ماتریس در فایل متنی قرار داده می شود، اما ما می توانیم علامت مورد نظر خود را برای این منظور، تعیین نماییم.
به عنوان مثال، علامت فضای خالی (کاراکتر space) یا چند تکرار از آن و یا کاراکتر تب (tab)، موارد رایجی برای استفاده هستند، زیرا در کل، تنها مقداری فضای خالی را در بین عناصر ماتریس در فایل متنی قرار می دهند و بنابراین به جز عناصر ماتریس، محتوای دیگری را در فایل متنی مشاهده نمی کنیم.
در این موارد، کدنویسی دستور dlmwrite به صورت زیر می باشد :
که در آن، ابتدا عبارت delimiter را نوشته ایم (به معنای کاراکتر جداکننده اطلاعات) و سپس کاراکتر مورد نظرمان یعنی تب (tab) را بر اساس عبارت زیر مشخص کرده ایم :
به مثال زیر توجه کنید :
نتیجه :
اگر فایلی با نام kelidestan.txt وجود ندارد، این فایل متنی ساخته می شود و سپس محتوای زیر در فایل مورد نظر نوشته می شود (فایل های txt را با خود نرم افزار متلب نیز می توانید باز کنید) :
کاراکتر فضای خالی (کاراکتر space) را به کار می بریم :
نتیجه :
اگر فایلی با نام kelidestan.txt وجود ندارد، این فایل متنی ساخته می شود و سپس محتوای زیر در فایل مورد نظر نوشته می شود (فایل های txt را با خود نرم افزار متلب نیز می توانید باز کنید) :
تعیین اینکه فایل متنی، بازنویسی شود (پاک شدن اطلاعات قبلی آن) یا اینکه اطلاعات در ادامه اطلاعات قبلی آن نوشته شود :
چانچه فایل متنی که مشخص کرده ایم، از قبل وجود داشته باشد و اطلاعاتی در آن موجود باشد، آنگاه دستور dlmwrite به صورت پیش فرض، فایل متنی را بازنویسی می کند و بنابراین اطلاعات قبلی آن پاک خواهد شد. اما اگر بخواهیم که اطلاعات قبلی فایل متنی، حفظ شود و اطلاعات جدید در ادامه اطلاعات قبلی فایل متنی نوشته شود، باید دستور dlmwrite را به صورت زیر بنویسیم :
که در آن، عبارت -append در پرانتز دستور dlmwrite ذکر شده است.
به مثال زیر توجه کنید :
کد متلب (MATLAB) زیر را 2 بار اجرا می کنیم تا اطلاعات ماتریس، 2 بار در فایل متنی نوشته شوند :
نتیجه :
تغییر تعداد رقم اعشار از اعداد که در فایل متنی نوشته می شود :
دستور dlmwrite به ما این امکان را می دهد که بتوانیم تعداد رقم اعشاری اعداد که در فایل متنی ذکر می شود را تعیین کنیم. برای این منظور، دستور dlmwrite را به صورت زیر می نویسیم :
که در آن، با عبارت precision ، تعداد رقم اعشاری اعداد (دقت اعداد) را برابر 3 رقم اعشاری تعیین نموده ایم.
به مثال زیر توجه کنید :
نتیجه :
نتیجه :
تعیین اینکه به اندازه چند ستون (Column) و ردیف (Row) از فایل متنی را خالی بگذاریم (فقط درج علامتی که بین عناصر قرار می گیرد) :
می توانیم به دستور dlmwrite اعلام کنیم که به اندازه چند ستون (Column) و ردیف (Row) از فایل متنی را خالی بگذارد (فقط درج علامتی که بین عناصر قرار می گیرد) و سپس اطلاعات فایل ماتریس در ادامه آنها نوشته شود.
به عنوان مثال، برای خالی گذاشتن 3 ردیف (Row) و 4 ستون (Column)، دستور dlmwrite را به صورت زیر می نویسیم :
به مثال زیر توجه کنید :
نتیجه :
نتیجه :
ایجاد پایان خط (Line terminator) (رفتن به خط بعدی) بعد از درج اطلاعات هر ردیف از ماتریس :
چنانچه فایل های متنی ساخته شده را با نرم افزار متلب (MATLAB) باز کنید، محتویات آنها به همان صورت که در مثال های قبل نمایش دادیم، می باشند و هر ردیف، در یک خط از فایل متنی نمایش داده می شود. اما اگر همان فایل ها را با یک نرم افزار مثل Notepad ویندوز باز کنید، مشاهده می کنید که همه اطلاعات فایل متنی، تنها در یک خط نمایش داده می شوند. دستور dlmwrite ، این امکان را به ما می دهد که یک پایان خط (Line terminator) (رفتن به خط بعدی) بعد از درج هر ردیف از ماتریس، ایجاد نماییم تا فایل متنی مورد نظر، حتی اگر با نرم افزارهایی مثل Notepad ویندوز باز شود، هر ردیف از ماتریس در یک خط از آن فایل متنی نمایش داده شود.
برای این منظور، دستور dlmwrite را به صورت زیر می نویسیم :
و یا به صورت زیر :
pc برای ایجاد carriage return/line feed (مخفف : CR/LF) و unix برای ایجاد line feed (مخفف : LF) می باشد (برای رفتن به خط های جدید در نرم افزارهایی مثل Notepad ، عبارت pc را به کار ببرید).
توضیحاتتون خیلی خوب و مفید بود . فقط یک سوال دارم . اگر با استفاده از همین دستور dlmwrite اطلاعات ماتریس رو بخوایم جایگزین یه قسمتی از فایل متنی بکنیم چیکار باید کنیم؟؟