فرمت های خروجی متن در متلب ( matlab )

كنترل فرمت خروجي  در نرم افزار متلب (  matlab  ) :

در مثال فوق راجع به تعيين فرمت فاصله مابين ارقام با استفاده از كليد space و ايجاد فاصله مناسب مطالبي را فرا گرفتيد ، حال ميخواهيم ، آنرا كاملتر نمائيم :

كاراكتر

توضيح

مثال مابين دوخروجي فرمت مورد نظر ( مثلا \b ) جايگزين شود

sprintf('A=%3.4f\be=%+2.4f',pi,exp(1))

\b

پسبردن و چسباندن به رقم قبلي

A=3.141e=+2.7183

\f

يك كاراكتر فاصله

A=3.1416
e=+2.7183

\n

به خط بعدي برده شود

A=3.1416

e=+2.7183

\r

بشكل پهن شده

A=3.1416

e=2.7183

 

\t

تقريبا 8 كاراكتر فاصله

A=3.1416  e=2.7183

\\

مابين دو خروجي علامت \ را چاپ

A=3.1416\e=2.7183

\"or"

مابين دو خروجي علامت " را چاپ

A=3.1416"e=2.7183

%%

مابين دو خروجي علامت % را چاپ

A=3.1416%e=2.7183

 

فرمتهاي كه ميتوانند جايگزين f گردند را با عملكردشان در جدول زير مشاهده ميكنيد :

كاراكتر

توضيح

مثال  عدد

%c

حروف كوچك

 

%d

با رقم همراه با توان ده با منظور كردن علامت آن نيز 

3.141593e+000

%e

با نماد علمي و مهندس

3.141593e+000

%E

نماد علمي با حرف بزرگ نمايش داده ميشود

3.141593E+000

%f

روش نقطه ثابت 

3.141593

%g

درصورتيكه رقم اعشارصفر باشد نمي نويسد

3.14159

%G

عملكردي همانند g

3.14159

%o

نمايش علمي بدون نشان دادن علامت عدد

3.141593e+000

%s

براي نمايش كاراكتر يا حرف

 

%u

نمايش دهدهي بدون علامت

3.141593e+000

%x

نمايش حروف a-f

 

%X

نمايش حروف A-F

 

 

به نمونه مثال زير همراه با خروجي آنها توجه فرمائيد  :

   Str = [65 66 67 pi];

   sprintf('%s %f', Str)

   ans =

   ABC 3.141593

 

   Str = [pi 65 66 67];

   sprintf('%s %f %s', Str)

   ans =

   3.141593e+000 65.000000 BC

 

sprintf('%0.5g',(1+sqrt(5))/2)

1.618

 

sprintf('%0.5g',1/eps)

4.5036e+15

sprintf('%15.5f',1/eps)

4503599627370496.00000

 

sprintf('%d',round(pi))

3

 

sprintf('%s','hello')

hello

 

sprintf('The array is %dx%d.',2,3)

The array is 2x3

 

sprintf('\n…………………………………………………………………………')

 

…………………………………………………………………………

آخرين مثال بيانگر اينست كه شما مي توانيد خطوط افقي و عمودي براي نمايش يك جدول در مطلب ( matlab ) ايجاد نمائيد .مثلا به خروجي برنامه زير توجه فرمائيد :

clc;

clear all;

A=pi;

B=exp(1);

C=eps;

fprintf('\n---------------------------------------')

fprintf('\n     A    |    \tB   |    \tc')

fprintf('\n---------------------------------------')

fprintf('     %3.5f  |  %3.5f   |  %3.5f',A,B,C)

fprintf('\n---------------------------------------')

بعد از اجرا داريم :

 

--------------------------------------------

     A         |      B        |    c

--------------------------------------------

     3.14159   |    2.71828   |    0.00000

--------------------------------------------

 

عملكرد fprintf همانند sprintf ولي بسيار بهتر و فراتر از آن ميباشد د بخشهاي بعدي به قابليتهاي اين تابع در نرم افزار متلب (  matlab  ) خواهيم پرداخت ، قابل ذكر است كه با اين تابع شما مي توانيد نتايج را بجاي نمايش در صفحه command مشخص كنيد كه در يك فايل شخصي با نام انتخابي خودتان و با فرمت مورد نظرتان چاپ نمايد .

تابع sprintf در نرم افزار متلب (  matlab  ) :

ااين تابع يك رشته (string ) را تحت فرمت مشخص  در نرم افزار متلب (  matlab  ) مي خواند نحوه عملكرد اين تابع طبق دستور زير است :

             A = sscanf(s,format)

    A = sscanf(s,format,size)

    [A,count,errmsg,nextindex] = sscanf(...)

     (A = sscanf(s,format  رشته s را تحت فرمت بيان شده ميخواند. عكس عملكرد اين تابع fscanf مي باشد.

 

مثال :

s = '2.7183  3.1416';

A = sscanf(s,'%f')

 

A =

    2.7183

    3.1416

مثال :

root2 = num2str([2, sqrt(2)]);

rootvalues = sscanf(root2,'%f')

 

rootvalues =

            2.0000

            1.4142

تابع fscanf  در نرم افزار متلب (  matlab  ) :

اعداد را تحت يك فرمت مشخص از يك فايل مي خواند . نحوه عملكرد بصورت زير است :

         A = fscanf(obj)

         A = fscanf(obj,'format')

         A = fscanf(obj,'format',size)

        [A,count] = fscanf(...)

        [A,count,msg] = fscanf(...)

مثال :

fid=fopen('mat1.m','r');

fprintf(fid,'%d',25);

a=fscanf(fid,'%d')

a= 

  25

 در مثال فوق در خط اول يك فايل شخصي با نام mat1  با پسوند .m (پسوند فايهاي مطلب) باز كرديم و در خط دوم برنامه عدد 25 را دراين فايل چاپ كرديم و در خط آخر برنامه عدد چاپ شده در اين فايل خوانده شده و در a  قرار داده شد  عملكرد با اين تابع توجه داشته باشيد كه اعداد بترتيب از طرف گوشه چپ به راست شماره بندي مي شوند و شما مي توانيد با انتخاب تعداد اعدادي كه بايستي خوانده شوند، اعداد مورد نظرتان را از فايل موجود بخوانيد ، براي درك بيشتر يك فايل مثلا همان فايلmat1 را كه ايجاد كرده ايد را باز كنيد و اعداد را بترتيب زير درآن بنويسيد:

1 2 3 4 5

6 7 8 9 10

11 12 13 14 15

16 17 18 19 20

21 22 23 24 25

حال دستورات زير را در نرم افزار متلب (  matlab  ) انجام دهيد:

 clc

 clear all

 NAME = input('please enter a file name:\n ','s')

 INP = fopen(NAME,'r');

 z = fscanf(INP, '%f');

 fclose(INP);

 h=z(3:7)'

 در خط سوم برنامه فوق از شما نام تابعي كه مي خواهيد اطلاعات ذخيره شده در آن مورد  استفاده قرار گيرد را از شما مي خواهد با وارد كردن نام تابع درخط پنجم برنامه تمامي اعداد داخل فايل خوانده شده و در خط آخر برنامه اعداد شماره هاي 3 تا 7 بصورت يك ماتريس سطري در پارامتر h ذخيره مي گردد ، اجراي برنامه در نرم افزار متلب (  matlab  ) را در زير مشاهده مينمائيد :

please enter a file name:

 mat1.m

 

NAME =

      mat1.m

 

h =

 

     3     4     5     6     7  

البته لازم نبود همه اعداد را بخوانيم. در صورتيكه تعداد محدودي از اعداد داخل فايل را احتياج داريد، فقط كافيست تعداد آن را در داخل دستور fscanf بنويسيد مثلا در مثال فوق ما حداكثر تا عدد شماره 7  احتياج داريم در حاليكه كل اعداد 25 عدد است لذا مي توانستيم بدين صورت عمل كنيم :

 

 clc

 clear all

 NAME = input('please enter a file name:\n ','s')

 INP = fopen(NAME,'r');

 z = fscanf(INP, '%f',7);

 fclose(INP);

 h=z(3:7);

در اين حالت فقط 7 عدد فراخواني شده و در zذخيره گرديده اند :

z'

ans =

 

     1     2     3     4     5     6     7

البته توابعي همانند fread و ... در نرم افزار متلب (  matlab  ) وجود دارند كه عملكردي مشابه تابع فوق دارند .

 

 


انجام پروژه با نرم افزار متلب ( matlab ) پذیرفته می شود.

برای سفارش پروژه با نرم افزار متلب ( matlab ) با ما تماس بگیرید.

  

 

   

دسته ها: متن در متلب

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

دیدگاه پس از تائید مدیریت منتشر می شود.