نمايش پست تنها
قديمي ۰۷-۲۹-۱۳۸۸, ۱۲:۲۳ بعد از ظهر   #3 (لینک دائم)
Astaraki Female
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Wink وارد کردن دیتا با استفاده از دستور tdfread و textscan

وارد کردن دیتا با استفاده از دستور 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 بهترین نتیجه رو میده ، این دستور خیلی انعطاف پذیره و فرمت های زیادی رو ساپورت میکنه
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده اند:
andr0meda (۰۸-۱۶-۱۳۹۲), mmsd54 (۰۸-۱۶-۱۳۸۸), سيروس (۰۳-۲۱-۱۳۹۰)