دادههای متنوع متنی، صوتی، تصویری و … میتوان به متلب وارد، روی آنها محاسبات انجام داد و از آنها خروجی گرفت. در این قسمت از دوره آموزش متلب فنولوژی در مورد خروجی فایل در متلب صحبت میکنیم. برای ورودی گرفتن از متلب نیز به بخش import در متلب مراجعه کنید. با ما همراه باشید.
خروجی فایل در متلب
خروجی فایل در متلب به معنای نوشتن در فایلها است. متلب به شما اجازه میدهد تا از دادههای خود در برنامه دیگری که فایلهای ASCII را میخواند استفاده کنید. برای این منظور، متلب چندین گزینه export داده را فراهم میکند.
شما میتوانید انوع فایلهای زیر را ایجاد کنید:
- فایل داده ASCII مستطیل شکل و مشخص که از یک آرایه استخراج میشود.
- فایل کلیدهای فشار داده شده را به صورت خروجی متنی میدهد.
- فایل مشخص ASCII با استفاده از توابع سطح پایین مانند fprintf.
- فایل MEX برای دسترسی به برنامه C++/C یا Fortran شما که در قالب فایل متنی مشخص نوشته میشود.
جدا از این، میتوانید دادهها را برای فایلهای صفحه گسترده (مانند اکسل یا گوگل شیت) نیز خروجی بگیرید. برای صادر کردن یک آرایه عددی به عنوان یک پرونده داده ASCII محدود، دو روش وجود دارد:
- با استفاده از تابع save و عبارت ascii–
- با استفاده از تابع dlmwrite
سینتکس تابع save به شکل زیر میباشد: (my_data.out فایل داده ASCII محدود شده است)
1 |
save my_data.out num_array -ascii |
سینتکس تابع dlmwrite به شکل زیر میباشد: (dlm_char کاراکتر جداکننده است)
1 |
dlmwrite('my_data.out', num_array, 'dlm_char') |
مثال از خروجی فایل در متلب
مثال زیر این مفاهیم را بهتر نشان میدهد. یک فایل اسکریپت ایجاد کنید و کد زیر را تایپ کنید:
1 2 3 4 5 |
num_array = [ 1 2 3 4 ; 4 5 6 7; 7 8 9 0]; save array_data1.out num_array -ascii; type array_data1.out dlmwrite('array_data2.out', num_array, ' '); type array_data2.out |
وقتی فایل را اجرا میکنید، نتیجه زیر نمایش داده میشود:
1 2 3 4 5 6 7 |
1.0000000e+00 2.0000000e+00 3.0000000e+00 4.0000000e+00 4.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 9.0000000e+00 0.0000000e+00 1 2 3 4 4 5 6 7 7 8 9 0 |
نکته: لطفا توجه داشته باشید که دستور save -ascii و تابع dlmwrite با آرایههای سلولی (cell array) به عنوان ورودی کار نمیکنند. برای ایجاد یک فایل ASCII محدود از محتویات یک آرایه سلولی، میتوانید:
- آرایه سلولی را با استفاده از تابع cell2mat به ماتریس تبدیل کنید.
- آرایه سلولی را با استفاده از توابع سطح پایین ورودی/خروجی export کنید.
توجه: اگر از تابع save برای نوشتن یک آرایه از کاراکترها در یک فایل ASCII استفاده میکنید، معادل ASCII نویسهها را در فایل مینویسد. به عنوان مثال، اگر بخواهیم کلمه “hello” را در یک فایل بنویسیم داریم:
1 2 3 |
h = 'hello'; save textdata.out h -ascii type textdata.out |
متلب عبارات بالا را اجرا کرده و نتیجه زیر را نمایش میدهد که کاراکترهای رشته «hello» در قالب ۸ رقمی ASCII است:
1 |
1.0400000e+02 1.0100000e+02 1.0800000e+02 1.0800000e+02 1.1100000e+02 |
نوشتن در فایل diary
فایلهای Diary گزارش فعالیت session در متلب هستند. تابع diary یک نسخه دقیق از session شما را در یک فایل دیسک، به استثنای دیتاهای گرافیکی، ایجاد میکند. برای روشن کردن عملکرد diary file، تایپ کنید:
1 |
diary |
در صورت تمایل میتوانید نام LOG FILE را وارد کنید:
1 |
diary logdata.out |
برای خاموش کردن تابع DIARY داریم:
1 |
diary off |
میتوانید diary file را در یک ویرایشگر متن باز کنید.
خروجی متنی دیتا با Low-Level I/O
تاکنون از آرایههای عددی خروجی گرفتهایم کردایم. با این حال، ممکن است لازم باشد فایلهای متنی دیگری از جمله ترکیبی از دادههای عددی و کاراکتر، فایلهای خروجی غیر مستطیلی یا فایلهایی با طرحهای رمزگذاری غیر ASCII ایجاد کنید. برای این منظور، MATLAB تابع سطح پایین fprintf را فراهم میکند.
در فعالیتهای سطح پایین فایل I/O، قبل از خروجی گرفتن باید یک فایل را با تابع fopen باز یا ایجاد کنید و identifier فایل را دریافت کنید. به طور پیش فرض fopen فایلی را برای دسترسی فقط خواندنی باز میکند. شما باید مجوز نوشتن یا اضافه کردن، مانند «w» یا «a» را تعیین کنید. پس از پردازش فایل باید آن را با تابع fclose ببندید.
مثال: یک فایل اسکریپت ایجاد کنید و کد زیر را در آن تایپ کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
% ایجاد ماتریس با دو سطر x = 0:10:100; y = [x; log(x)]; % باز کردن فایل برای نوشتن fid = fopen('logtable.txt', 'w'); % هدر جدول fprintf(fid, 'Log Function\n\n'); %نوشتن در فایل جدید fprintf(fid, '%f %f\n', y); fclose(fid); %نمایش فایل ایجاد شده type logtable.txt |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Log Function 0.000000 -Inf 10.000000 2.302585 20.000000 2.995732 30.000000 3.401197 40.000000 3.688879 50.000000 3.912023 60.000000 4.094345 70.000000 4.248495 80.000000 4.382027 90.000000 4.499810 100.000000 4.605170 |