خواندن اطلاعات یک فایل متنی، از یک خط مشخص به بعد، با دستورهای fopen و textscan ، در متلب (MATLAB)
معمولا در فایل های متنی، قبل از ذخیره اطلاعات اصلی، چند خط توضیحات نوشته می شود تا افرادی که بعدا فایل را استفاده می کنند، ساختار آن را متوجه بشوند (به این خطوط، header گفته می شود). بنابراین هنگامی که می خواهیم اطلاعات آن فایل را با نرم افزار متلب (MATLAB) بخوانیم، باید اعلام کنیم که چند خط اول فایل، توسط متلب (MATLAB) خوانده نشود. این مورد را با یک مثال شرح می دهیم :
فرض کنید یک فایل متنی با نام example.txt داریم که اطلاعات زیر درون آن نوشته شده است :
Line number 2
Line number 3
Line number 4
فرض می کنیم که 2 خط اول فایل، همان توضیحات (header) باشد، بنابراین باید 2 خط اول فایل خوانده نشود. بنابراین کدهای زیر را می نویسیم :
close all
clc
fid=fopen('example.txt');
A=textscan(fid, '%s', 'delimiter', '\n', 'headerlines', 2)
Information_1=A{1}{1}
Information_2=A{1}{2}
ابتدا فایل example.txt را با دستور fopen باز کرده ایم، سپس کل اطلاعات آن، به جز بخش توضیحات، را با دستور textscan به صورت یک آرایه سلولی (cell array) در متلب ذخیره می کنیم. همان طور که مشاهده می کنید، درون پرانتز دستور textscan ، مقدار delimiter را برابر \n تعیین کرده ایم، delimiter همان جداکننده است که باعث می شود که بخش های مختلف آرایه، بر اساس علامتی که تعیین می کنیم، مشخص شود. علامت های \n برای رفتن به خط جدید به کار می رود، بنابراین وقتی علامت های \n را به عنوان جداکننده تعیین می کنیم، باعث می شود که هر خط از فایل متنی، در یک بخش از آرایه سلولی قرار داده شود. مهمترین بخش کدها، headerlines می باشد که آن را برابر 2 تعیین کرده ایم و متلب، بر اساس مقدار آن، متوجه می شود که 2 خط اول فایل، توضیحاتی است که نباید بخواند.
آرایه سلولی A ، شامل کل اطلاعات فایل، به جز 2 خط اول آن خواهد بود.
نتیجه :
{2x1 cell}
Information_1 =
Line number 3
Information_2 =
Line number 4
همان طور که مشاده می کنید، آرایه سلولی A دارای 2 سلول است که همان اطلاعات دو خط آخر فایل example.txt می باشد. اطلاعات آن دو سلول را در خروجی نمایش داده ایم.
با سلام و ممنون از مطالب خوب شما.
من یک سوال دارم درباره حذف کردن سطرهای دلخواه از فایل متنی در متلب.
من یک سری فایل متنی دارم که هر کدوم ۱۸۰۰۰ خط دارن و باید خطهای وسط اون رو حذف کنم. خطهایی که باید حذف بشن ۵ تا هستن که هر ۴۸ خط در میون تکرار میشن تا انتها. با کدهایی که در سایت بود نتونستم اینکارو انجام بدم. لطفا کمکم کنید