کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

وارد کردن داده ها در متلب

Data Import

وارد کردن داده در متلب به معنی اجرا شدن داده از یک فایل بزرگ می باشند. تابع importdata امکان بار گیری (load) متنوع فایل های داده از فرمت های مختلف را می دهد. جدول زیر را ببینید.

S.N.

Function and Description

1

A = importdata(filename)

بارگیری داده به آرایه A از فایلی که دلالت بر filename دارد.

2

A = importdata('-pastespecial')

بارگیری داده سیستم کلیپوردبه جای یک فایل.

3

A = importdata(___, delimiterIn)

تفسیر delimiterIn از جدا کننده ستون در فایل اسکی، نام فایل یا داده کلیپورد. می توانیم از delimiterIn با هر آرگومان ورودی در بالای سینتکس استفاده کرد.

4

A = importdata(___, delimiterIn, headerlinesIn)

بارگیری داده از فایل اسکی، نام فایل یا کلیپورد، خواندن شروع داده عددی از خط headerlinesIn+1.

5

[A, delimiterOut, headerlinesOut] = importdata(___)

برگرداندن کاراکتر محدود کننده مشخص برای ورود فایل اسکی در delimiterOut و عدد مشخص شده خطوط هدر در headerlinesOut، استفاده کردن هر یک از آرگومان های ورودی در سینتکس قبلی.

 

به صورت پیش فرض، Octave از تابع importdata() پشتیبانی نمی کند، بنابراین باید جست و جو کرد و این بسته را نصب کرد. در مثال زیر با نصب و راه اندازی Octave آشنا می شوید.

مثال

فرض کنیم می خواهیم یک فایل عکس را بارگیری کرده و نمایش دهیم. یک فایل اسکریپت ایجاد کرده و کد های زیر را در آن تایپ می کنیم.

filename = 'smile.jpg';

A = importdata(filename);

image(A);

وقتی متلب را اجرا  می کنیم، فایل عکس اجرا می شود. باید آن را در دایرکتوری جاری ذخیره کنید.

clip_image001[4]

مثال

در این مثال یک فایل متنی، Delimiter مشخص شده و ستون سر برگ (Column Header) را وارد کرده و نام آن را weeklydata.txt می نامیم. کد های زیر را در فایل بنویسید.

SunDay  MonDay  TuesDay  WednesDay  ThursDay  FriDay  SaturDay
95.01   76.21   61.54    40.57       55.79    70.28   81.53
73.11   45.65   79.19    93.55       75.29    69.87   74.68
60.68   41.85   92.18    91.69       81.32    90.38   74.51
48.60   82.14   73.82    41.03       0.99     67.22   93.18
89.13   44.47   57.63    89.36       13.89    19.88   46.60

یک فایل اسکریپت ایجاد کرده و کد های زیر را در آن وارد کنید.

filename = 'weeklydata.txt';
delimiterIn = ' ';
headerlinesIn = 1;
A = importdata(filename,delimiterIn,headerlinesIn);
% View data
for k = [1:7]
   disp(A.colheaders{1, k})
   disp(A.data(:, k))
   disp(' ')
end

وقتی فایل را اجرا می کنید، نتیجه به صورت زیر دیده می شود.

SunDay
   95.0100
   73.1100
   60.6800
   48.6000
   89.1300
 
MonDay
   76.2100
   45.6500
   41.8500
   82.1400
   44.4700
 
TuesDay
   61.5400
   79.1900
   92.1800
   73.8200
   57.6300
 
WednesDay
   40.5700
   93.5500
   91.6900
   41.0300
   89.3600
 
ThursDay
   55.7900
   75.2900
   81.3200
    0.9900
   13.8900
 
FriDay
   70.2800
   69.8700
   90.3800
   67.2200
   19.8800
 
SaturDay
   81.5300
   74.6800
   74.5100
   93.1800
   46.6000

مثال

در این مثال، اجازه دهید که داده ها را از کلیپورد وارد کنیم.

یک فایل اسکریپت ساخته و کد های زیر را در آن بنویسید.

A = importdata('-pastespecial')

بعد از اجرا، عبارت زیر دیده می شود.

A = 
    'Mathematics is simple'

سطح پایین فایل I/O

تابع importdata یک تابع تراز بالا می باشد. توابع سطح پایین I/O در متلب، بیشترین کنترل را بر خواندن یا نوشتن داده در یک فایل دارند. بنابراین این توابع نیاز بیشتری به اطلاعات دقیق درباره فایلتان برای کار موثر دارند.

متلب توابعی را برای خواندن یا نوشتن عملگر ها در سطح کاراکتر یا بایت ارائه می دهد.

Function

Description

fclose

بستن یک یا تمام فایل های باز

feof

تست برای انتهای فایل

ferror

I/Oاطلاعات در باره ی خطای فایل

fgetl

خواندن خطی از فایل، انتقال خط جدید کاراکتر ها

fgets

خواندن خطی از فایل، نگه داشتن خط جدید کاراکتر ها

fopen

باز کردن فایل یا بدست آوردن اطلاعاتی از فایل های باز

fprintf

نوشتن داده در فایل متنی

fread

خواندن داده از فایل دودویی

frewind

حرکت نشان دهنده موقعیت فایل به ابتدای فایل باز

fscanf

خواندن داده از فایل متنی

fseek

حرکت به سوی موقعیت مشخص شده در فایل

ftell

موقعیت در باز کردن فایل

fwrite

نوشتن داده در فایل دودویی

 

وارد کردن فایل های متنی داده توسط I/O سطح پایین

متلب توابع زیر را برای وارد کردن فایل های متنی داده توسط I/O ارائه می دهد.

1)     تابع fscanf داده های فرمت شده را در یک فایل متنی یا اسکی می خواند.

2)     توابع fgetl و fgets یک خط از یک فایل را در یک زمان می خواند، که در آن یک کاراکتر خط جدید، هر خط را جدا می کند.

3)     تابع fread یک جریان از داده را در سطح یک بایت یا بیت می خواند.

مثال

یک فایل داده متنی با نام 'myfile.txt' را در دایرکتوری working ذخیره می کنیم. متلب داده بارندگی را برای 3 ماه ذخیره می کند بع عنوان مثال جون، جولای و آگوست 2012.

داده ها در myfile.txt شامل مجموعه های زمان، ماه و میزان بارندگی در 5 مکان است. عنوان اعداد ماه در سر برگ M می باشد.

Rainfall Data
Months: June, July, August
 
M=3
12:00:00
June-2012
17.21  28.52  39.78  16.55 23.67
19.15  0.35   17.57  NaN   12.01
17.92  28.49  17.40  17.06 11.09
9.59   9.33   NaN    0.31  0.23 
10.46  13.17  NaN    14.89 19.33
20.97  19.50  17.65  14.45 14.00
18.23  10.34  17.95  16.46 19.34
09:10:02
July-2012
12.76  16.94  14.38  11.86 16.89
20.46  23.17  NaN    24.89 19.33
30.97  49.50  47.65  24.45 34.00
18.23  30.34  27.95  16.46 19.34
30.46  33.17  NaN    34.89  29.33
30.97  49.50  47.65  24.45 34.00
28.67  30.34  27.95  36.46 29.34
15:03:40
August-2012
17.09  16.55  19.59  17.25 19.22
17.54  11.45  13.48  22.55 24.01
NaN    21.19  25.85  25.05 27.21
26.79  24.98  12.23  16.99 18.67
17.54  11.45  13.48  22.55 24.01
NaN    21.19  25.85  25.05 27.21
26.79  24.98  12.23  16.99 18.67

ما باید داده هایی را در این فایل وارد کرده و نشان دهیم. مراحل زیر را در نظر بگیریم.

1)     فایل را با تابع fopen باز کرده و مشخص کنید.

2)     داده را با فایل format specifiers برای نمونه، رشته '%s'، عدد صحیح '%d'، یک عدد با ممیز شناور عبارت '%f' شرح دهید.

3)     کاراگتر های حرفی را در این فایل بالا و پچایی کنید. برای این کار از نماد ('*') استفاده کنید.

برای مثال هدر (سر برگ) ها را بخوانید و مقدار ساده ای برای M برگردانید، می نویسیم.

M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n', 1);

4)     به عنوان پیش فرض، fscanf داده را مطابق توضیحات فرمت تا زمانی که هیچ داده ای را برای اتصال پیدا نکند یا آن را به انتهای فایل برساند، می خواند. همچنین باید از حلقه for برای خواندن 3 داده و هر بار استفاده از آن، 7 سطر و 5 ستون را بخوانیم.

5)     باید ساختاری با نام mydata در workspace ذخیره کنیم. این ساختار دارای 3 زمینه، زمان، ماه و میزان بارندگی می باشد.

یک فایل اسکریپت ایجاد کرده و کد های زیر را در آن می نویسیم.

filename = '/data/myfile.txt';
rows = 7;
cols = 5;
 
% open the file
fid = fopen(filename);
 
% read the file headers, find M (number of months)
M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n', 1);
 
% read each set of measurements
for n = 1:M
   mydata(n).time = fscanf(fid, '%s', 1);
   mydata(n).month = fscanf(fid, '%s', 1);
 
   % fscanf fills the array in column order,
   % so transpose the results
   mydata(n).raindata  = ...
      fscanf(fid, '%f', [rows, cols]);
end
for n = 1:M
   disp(mydata(n).time), disp(mydata(n).month)
   disp(mydata(n).raindata)
end
 
% close the file
fclose(fid);

عبارت بالا بعد از اجرا به صورت زیر نوشته می شود.

filename = '/data/myfile.txt';
rows = 7;
cols = 5;
 
% open the file
fid = fopen(filename);
 
% read the file headers, find M (number of months)
M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n', 1);
 
% read each set of measurements
for n = 1:M
   mydata(n).time = fscanf(fid, '%s', 1);
   mydata(n).month = fscanf(fid, '%s', 1);
 
   % fscanf fills the array in column order,
   % so transpose the results
   mydata(n).raindata  = ...
      fscanf(fid, '%f', [rows, cols]);
end
for n = 1:M
   disp(mydata(n).time), disp(mydata(n).month)
   disp(mydata(n).raindata)
end
 
% close the file
fclose(fid);

 

 

1394/09/04 34771 2348
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...