گاهی در برنامه نویسی متلب نیاز است داده ها را نه مستقیم از کاربر بلکه به طور غیر مستقیم و از طریق فایلهای متنی یا باینری باز خوانی کنیم. این کار معمولا در مواقعی که قرار باشد با دیگر نرم افزارهای تحلیلی و محاسباتی ارتباط برقرار کنیم بسیار مفید خواهد بود.(پاسخ سوال علی)

در برنامه ی امروز قصد دارم تابع سینوس را از طریق یک فایل متنی شامل داده های ورودی رسم کنم. ابتدا با کمک خود متلب داده های مورد نظر را به صورت زیر تولید می کنم:

clc;
x=-pi:pi;
for n=1:length(x)
fprintf('%8.4f\n',x(n))
end

که خروجی زیر را خواهد داشت :

 

-3.1416

-2.1416

-1.1416

-0.1416

0.8584

1.8584

2.8584

نتایج حاصل را می توانید مستقیما به notepad منتقل کرده و با فرمت txt ذخیره کنید.اما اگر بخواهید از طریق خود متلب این فایل را بسازیر از دستور save به صورت زیر استفاده می کنیم:

save('mysindata.txt','x','-ascii')

این فرمان متغیر x را در فایل متنی mysindata.txt دخیره می کند. توجه داشته باشید که اگر گزینه ی –ascii را وارد نکنید داده های شما به صورت باینری ذخیره می شوند و فقط MATLAB قادر خواهد  بود آن ها را بازخوانی کند. معمولا بهتر است داده ها به صورت متنی از نوع ascii باشند تا بتوانید بدون نیاز به برنامه ی خواصی آن ها مشاهده کنید.

حال برنامه ی جدیدی می نویسیم که داده هایش را از روی این فایل بازخوانی کند و نمودار sin را رسم کند:

 

clc

fid = fopen('mysindata.txt', 'r');

a = fscanf(fid, '%f', [1 inf])
% It has one row.

plot(a,sin(a))

fclose(fid)

کار فرمان fopen باز کردن فایل و آماده سازی آن برای باز خوانی است.گزینه ی r در انتهای فرمان به معنی reading است وبا کمک آن شما به متلب ذکر می کنید که فقط اجازه ی خواند فایل را دارد.

فرمان fscanf کارش خواندن داده ها و انتقال آنها به ماتریس مانند a است.در اینجا ما فقط یک ستون از داده ها را در اختیار داشتیم و درست همانند حالاتی که هنگام استفاده از fprintf پیش می آید می توانید با آن کار کنید. در انتهای فرمان [1 inf] به متلب می گوید که یک ستون را تا انتها بخواند.

*داده ها در متغیری با نام a ذخیره شده اند تا مطمئن باشید که تابع sin از x برای رسم استفاده نکرده است.

a =

-3.1416   -2.1416   -1.1416   -0.1416    0.8584    1.8584    2.8584

برای حالتی که بیشتر از یک متغیر داریم برای ذخیره اعداد به صورت زیر عمل می کنیم :

save('mydata.txt','x','y','-ascii')

همچنین برای بازخوانی داده ها از فایل دستور fscanf به صورت زیر تغییر می کند :

a = fscanf(fid, '%f %f', [2 inf])    % It has two row.

مطالب مشابه

قدرت متلب

هسته متلب برای سرعت و کارایی بالا به زبان سی نوشته

متلب چیست؟

نرم افزار  MATLAB برنامه كامپيوتري است كه براي كسا

استفاده از راهنمای متلب

در صورتي كه بخواهيد در مورد دستور و يا تابع خاصي ا

demo استفاده از

دستور demo پنجره جديدي باز مي كند كه شما در آن مي

عمليات ابتدايي در متلب

تعريف كردن آرايه ها و عمليات جبري روي آنها چهار نو

ذخيره كردن و بازيابي داده ها

در صورتي كه بخواهيد كليه متغيرهاي موجود در محيط كا

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید