وارد کردن دیتا با استفاده از دستور TDFREAD و TEXTSCAN
با متلب تقریبا همه جور فایلی رو میشه وارد (import) یا خارج (export) کرد . فایل های باینری ، فایل های نوشتاری (text) یا حتی فایل های تصویری مثل عکس یا ویدئو برای عملیاتی مثل پردازش تصویر . در واقع میشه یه سری دیتا رو از طریق یه فایل text وارد متلب کرد و یه سری پردازش های روی اون اطلاعات انجام داد و بعد نتایج حاصل رو در یه فایل دیگه ذخیره کرد. پس قبل از هرکاری احتیاج داریم این فایل حاوی اطلاعات رو یه جوری تو متلب بخونیمش ، برای این کار هم دستورهای مختلفی وجود داره که هر کدوم از اون ها معایب و محاسن خودشون رو دارن ، اما دو تا دستور هستن که بیشتر استفاده میشن ، یکی tdfread و دیگری textscan . کار خودمون رو با tdfread شروع میکنیم و به سراغ دومین دستور یعنی textscan میریم.
فرض کنید یه سری دیتا داریم در دو فرمت مختلف به این صورت :
The data as .txt
كد:
Region State Sales Head Count
North North Dakota 80078 81
North Montana 90608 391
North Michigan 4598 27
North Wisconsin 11622 36
South Florida 9788 73
South Georgia 86456 385
South Alabama 94766 91
South Mississippi 13004 61
East North Carolina 612 25
East Virginia 85508 233
West California 84419 262
West Washington 92682 97
West Oregon 53185 51
The data in .csv format:
كد:
i,Region,State,Sales,Head Count
1,North,North Dakota,80078,81
2,North,Montana,90608,391
3,North,Michigan,4598,27
4,North,Wisconsin,11622,36
5,South,Florida,9788,73
6,South,Georgia,86456,385
7,South,Alabama,94766,91
8,South,Mississippi,13004,61
9,East,North Carolina,612,25
10,East,Virginia,85508,233
11,West,California,84419,262
12,West,Washington,92682,97
13,West,Oregon,53185,51
یه توضیح کوچولو هم بدم که با برنامه excel میشه اطلاعات رو با فرمت cvs خارج کرد که تو این مثال ما از این فرمت استفاده کردیم. شما میتونید فایل های نمونه رو با فرمت txt از اینجا و با فرمت cvs از اینجا دریافت کنید.
استفاده ازTDFREAD
خیلی دستور ساده و در عین حال کارآمدی هست که به این صورت استفاده میشه : خروجی در متغیر quanData از نوع struct ذخیره میشن
quanData =
Region: [13x5 char]
State: [13x14 char]
Sales: [13x1 double]
Head_Count: [13x1 double]
در این قسمت دیتا به راحتی وارد متلب شد و آماده است تا هر جا که احتیاج باشد ، پردازش شود . همونطور که میبینید این دستور کار رو بسیار ساده کرده ، اما متاسفانه در اینجا نوشته شده که از ورژن R2007b بالاتر این دستور توسط متلب ساپورت میشه .
استفاده از TEXTSCAN
این دستور هم مثل قبلی راحته ( اما نه با اندازه ی اون ) و دیگه مشکل ساپورت رو نداره ، این بار توسط این دستور فایل با فرمت cvs رو ایمپرت میکنیم : باز هم دیتا در یک سل ذخیره شد و میتونیم ازش استفاده کنیم :
كد:
robData =
[13x1 double] {13x1 cell} {13x1 cell} [13x1 double] [13x1 double]
بهترین روش کدومه ؟
اصلا بهتر از این راه ، راه دیگه ای هم هست ؟ راستش رو بخواید باید بگم نه !! فکر نکنم از این راه ساده تر باشه ، شاید بهتره اول با استفاده از دستورات csvread, dlmread, load, importdata, tdfread خودتون تست بکنید ، تا به این نتیجه برسید ! البته بسته به نوع دیتایی که دارین ممکنه بعضی از پنج دستور کارتون رو راه نندازه و با مشکل مواجه بشید ، اما در آخر سر به نظر من دستور textscan بهترین نتیجه رو میده ، این دستور خیلی انعطاف پذیره و فرمت های زیادی رو ساپورت میکنه