دستورات fopen و fprintf در متلب (MATLAB)
- تیم تولید محتوا
- MATLAB

در بسیاری از پروژهها در نرمافزار متلب (MATLAB)، نیاز داریم که نتایج را در فایل متنی ذخیره کنیم یا از فایلهای متنی داده بخوانیم. در این آموزش، با دو دستور بسیار مهم و پرکاربرد متلب یعنی fopen و fprintf آشنا میشوید.
دستور fopen در متلب چیست؟
دستور fopen در متلب برای باز کردن، ایجاد یا دسترسی به فایلهای متنی استفاده میشود. اگر قصد دارید دادههایی مانند شتاب، زمان، جابجایی، یا پاسخ سازه را در فایل ذخیره کنید، باید ابتدا با این دستور فایل را باز نمایید.
نحوه استفاده از دستور fopen به صورت زیر میباشد:
fileID=fopen('filename.txt','permission');
پارامتر permission مشخص میکند که فایل برای چه منظوری باز میشود. حالت های مختلف و کاربردها بصورت زیر می باشد:
حالت | کاربرد |
---|---|
'r' | باز کردن فایل برای خواندن |
'w' | باز کردن یا ایجاد فایل برای نوشتن-اگر فایل وجود داشته باشد محتوای آن پاک میشود |
'a' | باز کردن یا ایجاد فایل برای نوشتن در انتهای آن |
'+r' | بازکردن و نوشتن فایلهای موجود |
'+w' | باز کردن یا ایجاد فایل برای خواندن یا نوشتن با حذف محتوا |
'+a' | باز کردن یا ایجاد فایل برای خواندن یا نوشتن در انتهای محتوا |
دستور fprintf در متلب چیست؟
پس از باز کردن فایل با fopen، برای نوشتن دادهها در آن از دستور fprintf استفاده میشود. این دستور به شما امکان میدهد تا اعداد، متن یا ترکیبی از آنها را با فرمت دلخواه وارد فایل کنید.
در حالت کلی استفاده از دستور fprintf به صورت زیر است:
fprintf(fileID,formatSpec,A1,...,An);
در این سینتکس، fileID متن خروجی را تعیین میکند. این مقدار را با دستور fopen استخراج میکنیم. همچنین اگر به جای fileID عدد 1 را قرار دهیم، خروجی در قسمت command window نمایش داده میشود.
آرگمان بعدی، formatSpec میباشد. تمامی جزئیات متن خروجی در این قسمت تعیین میشود. محتویات این بخش داخل کوتیشن(”) و بصورت یک رشته متنی تعریف میشود. شکل زیر ساختمان اصلی formatSpec را نشان میدهد:

اگر دقت شود، formatSpec با یک % شروع شده و با یک کاراکتر تبدیل خاتمه مییابد. بخش ضروری آن که حتما باید باشد، کاراکتر تبدیل میباشد.
کاراکتر تبدیل (formatSpec)
کاراکتر تبدیل نوع فرمت خروجی را مشخص میکند که از یک حرف تشکیل شده و در انتهای formatSpec قرار میگیرد.
time=[0 0.02 0.04];
Acc=[0.0012 0.0021 -0.001];
fileID=fopen('acceleration.txt','w'];
fprintf(fileID,'Time(s)\t Acceleration(g)\n');
for i=1:length(time)
fprintf(fileID,'%f\t%f\n',time(i),Acc(i));
end
fclose(fileID);
