آکادمی سیم پاور

گام هفدهم: وارد کردن داده

گام هفدهم: وارد کردن داده

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

تابع و توصیف شماره

a = importdata(filename)

بارگذاری داده به آرایه a از فایل توسط filename مشخص  می شود.

1

a = importdata(‘- pastspecial’)

داده را از حافظه کلیپ برد نسبت به یک فایل بارگذاری می کند.

2

a = importdata(___ ,delimiterln)

delimiterln به عنوان جداکننده ستونی در فایل اسکی، نام فایل و داده حافظه کلیپ برد  تفسیر می شود،

3

a = importdata(___ ,delimiterln,headerlinesln)

داده از فایل اسکی، نام فایل، یا حافظه کلیپ برد بارگذاری می کند ، داده عددی شروع شده ازline headerlinesln+1 را می خواند.

4

[a,delimiterout,headerlinesout] = importdata(__)

علاوه بر برگرداندن یافتن کاراکتر delimiter برای ورودی فایل اسکی در delimiterout و یافتن تعدادی از  header line در headerlinesout، از هر آرگومان ورودی در نحوه اجرا در متلبقبلی استفاده شده است.

 

5

به طور پیش فرض، octav  اختصاص به پیشتیانی برای () importdataندارد، بنابراین شما بسته زیر را  برای ایجاد نمونه های کار با نصب  actave  جستجو و نصب کنید.

مثال

اجازه دهیدفایل تصویری را بارگذاری و نمایش دهیم.یک فایل اسکریپت ایجاد کنید و کد زیر را در آن تایپ نمایید:

filename =‘ smile . jpg‘;

a = impo:ict:dat:a(filename);

image (a) ;

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

498

مثال2 

در این مثال، ما یا فایل متنی را ، جداکننده  مشخص و عنوان ستون را وارد می کنیم. به ما اجازه دهید  یک فایل اسکی  فضا – حد و مرز مشخص شده با عناوین ستون، با نام اطلاعات هفتگی ایجاد کنیم.

فایل متنی weeklydata.txt  شبیه این است:

499

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

filename =‘weeklydata.txt‘;

delimitexln =‘ ‘;

headexlinesln =l;

a = impoxtdata(filename,delimitexln,headexlinesln);

%view data

for k =[l:7]

    disp(a.c0lheadexs{l, k})

    disp(a.data(:, k))

    disp(‘ ‘)

end

زمانی که شما فایل را اجرا می کنید، نتیجه زیر نشان داده می شود:

500

 

مثال 3

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

خطوط زیر را به کلیپ برد کپی کنید:

ریاضیات ساده است

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

a = importdata(‘-pastespecial’)

زمانی که فایل را اجرا می کنید نتیجه زیر نشان داده می شود:

501

فایل i/o(ورودی / خروجی) سطح – پایین

تابع importdata  یک تابع سطح بالا است.. توابع i/o سطح پایین  در متلب اجازه کنترل بیشتر بر روی خواندن و نوشتن داده در فایل را می دهد.اگرچه، توابع به جزئیات اطلاعات بیشتری درباره فایل برای کار موثر نیاز دارند.

متلب  توابع زیر را برای عملیات خواندن و نوشتن در سطح بایت و کاراکتر فراهم آورده است:

توصیف تابع
بستن یا بازکردن تمامی فایل ها fclose
تست برای انتهای فایل feof
اطلاعات درباره خطاهای فایل i/o ferroe
خواندن خطی از فایل، حذف کردن کاراکترهای خط جدید fgetl
خواندن خطی لز فایل، نگهداشتن کاراکترهای خط جدید fgets
بازکردن فایل، یا بدست آوردن اطلاعات درباره فایل های باز fopen
نوشتن داده در فایل متنی fprintf
خواندن داده از فایل دودویی fread
انتقال اشاه گر موقعیت فایل به آغاز فایل باز frewind
خواندن داده از فایل متنی fscanf
انتقال به موقعیت مشخص شده در فایل fseek
موقعیت در فایل باز ftell
نوشتن داده به فایل باینری fwrite

ورود فایل های داده متنی با سطح – پایین  i/o

متلب توابع زیر را برای ورود فایل های داده متنی فراهم کرده است:

  • تابع scanf قالب های ئائه در متن یا فایل اسکی را می خواند.
  • توابع fgetl و fgets یک خط از یک فایل را در یک زمان می خوانند، که کاراکتر خط جدید را از هر خط جدا می کند.
  • تابع fread یک جریان از داده در سطح بیت یا بایت را می خواند.

مثال

ما یک فایل داده متنی ‘myfile.txt’ در فهرست کار خود ذخیره کردیم. این فایل داده بارندگ را برای سه ماه ذخیره می کند؛ june،july،agust برای سال 2012.

داده در  myfile.txt با مجموعه ای از زمان های تکراری  ماه و میزان بارش پنج مکان قرار گرفته شده است. داده header تعداد ماه های m را ذخیره می کند؛ بنابراین ما m مجموعه از اندازه گیری ها داریم.

این فایل شبیه این است:

502

ما داده را از این فایل وارد می کنیم و داده را نمایش می دهیم.مراحل زیر را  انجام دهید:

  1. فایل را با تابع fopen بازکنید و تعیین کننده فایل را بگیرید.
  2. داده را در فایل با قالب specifiers ، مانند ‘%s’ برای رشته،’%d’ برای اعداد صحیح،یا ‘%f’ برای ارقام ممیز شناور توصیف نمایید
  3. برای رفتن به کاراکترهای تحت الفظی در فایل، شامل آن ها در قالب تشریح  است. برای رفتن به  یک میدان داده، از علامت ستاره (‘*’) استفاده می شود.

برای مثال، با خواندن header ها و برگرداندن مقدار مجرد برای m می می نویسیم:

503

  1. به طور پیش فرض،fscanf داده را بر اساس فرمت توصیفی ما تا زمانی که با قالب توصیفی داده مطابقت ندارد، یا به انتهای فایل رسیده است می خواند.در اینجا ما  برای حلقه برای خواندن سه مجموعه از داده در هر زمان استفاده خواهیم کرد، که 7 سطر و پنج ستون را می خواند.
  2. ما می خواهیم ساختاری با نام mydata در فضای کاری برای ذخیره داده  خوانده شده از یک فایل استفاده کنیم.ساختار سه زمان – دقیق، ماه و اطلاعات باران را دارد.

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

filename =‘/data/myfi1e.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);

زمانی که شما فایل را اجرا می کنید، نتیجه زیر نشان داده می شود:

504

 

 

خرید کتاب 28 گام موثر در فتح متلب

سعید عربعامری
من سعید عربعامری نویسنده کتاب 28 گام موثر در فتح متلب مدرس کشوری متلب و سیمولینک و کارشناس ارشد مهندسی برق قدرتم . بعد از اینکه دیدم سایتهای متعدد یک مجموعه کامل آموزش متلب و سیمولینک ندارند به فکر راه اندازی این مجموعه شدم
http://sim-power.ir

یک پاسخ به “گام هفدهم: وارد کردن داده

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *