تبلیغات
آموزش مطلب - مطالب شهریور 1384

نویسنده :امین باشی
تاریخ:دوشنبه 7 شهریور 1384-09:08 ق.ظ

Core Graphics Objects

این  مجموعه شامل  دستورات   اولیه رسم توابع ، محورها ، تصاویر و ... می‌باشد. در ساختار درختی این اشیا زیرمجموعه axes هستند.

این مجمعه شلمب توابع زیر می‌باشد.

 

Axes

این تابع برای تعریف كردن محورهای مختصات در یك پنجره استفاده می‌شود.

Image

برای نمایش تصویر بكارمی‌رود.

image(imread(' ***** '))

بجای ستاره‌ها ادرس بك عكس را قرار دهید.

Light

برای تنظیم نور بكار می‌رود و تنها بر اشیایی از نوع patch  و surface اثر می‌كند.

h = surf(peaks);

set(h,'FaceLighting','phong','FaceColor','interp',...

      'AmbientStrength',0.5)

light('Position',[1 0 0],'Style','infinite');

figure;

h = surf(peaks);

set(h,'FaceLighting','phong','FaceColor','interp',...

      'AmbientStrength',0.5)

با توجه به مثال بالا كارایی این تبع به وضوح قابل مشاهده است.

Line

بزای رسم خط استفاده می‌شود.

t = 0:pi/20:2*pi;

hline = line(t+.06,sin(t),'LineWidth',4,'Color',[.8 .8 .8]);

Patch

برای رسم چند ضلعی‌ها مورد استفاده قرار می‌گیرد.

x = [0 0;0 1;1 1];

y = [1 1;2 2;2 1];

z = [1 1;1 1;1 1];

tcolor(1,1,1:3) = [1 1 1];

tcolor(1,2,1:3) = [.7 .7 .7];

patch(x,y,z,tcolor)

 Rectangle

تابعی كه برای رسم مستطیل ، بیضی ، دایره و ... بكارمی‌رود.

rectangle('Position',[0.59,0.35,3.75,1.37],...

          'Curvature',[0.8,0.4],...

         'LineWidth',2,'LineStyle','--')

Surface

یك شی 3 بعدی كه هر آرایه آن با توجه به colormap رنگ می‌شود.

load clown

surface(peaks,flipud(X),...

        'FaceColor','texturemap',...

        'EdgeColor','none',...

        'CDataMapping','direct')

colormap(map)

view(-35,45)

 Text

برای نوشتن بر روی پنجره (در ناحیه‌ای كه محورتعریف شده باشد) بكار می‌رود.

 plot(0:pi/20:2*pi,sin(0:pi/20:2*pi))

text(pi,0,' \leftarrow sin(\pi)','FontSize',18)

در مطالب بعدی به هركدام از این توابع خواهم پرداخت.



نوع مطلب : Organization of Graphics Objects 

نویسنده :امین باشی
تاریخ:یکشنبه 6 شهریور 1384-06:08 ق.ظ

Tag

تقربیا همه توابعی كه آرگومانهایی به صورت زوج اسم/ویژگی (name/property) قبول می‌كنند

ویژگی tag  را دارند. مقدار این ویژگی یك رشته(string) است كه توسط كاربر تعریف می‌شود. و هرچیزی می‌تواند باشد.

هنگامی شما برنامه‌هلی خود را به صورت function می‌نویسید، متغبرها به صورت محلی(local) تعریف می‌شوند یعنی در خارج از تابع تعریف نشده‌ هستند.اگر بخواهیم از آنها در جای دیگری هم استفاده كنیم باید آنها را به صورت سراسری (global)   تعریف كنیم یا به صورت آرگومان به درون دیگر توابع بفرستیم.اصولا نوشتن متغیرها به صورت سراسری از زیبایی برنامه كم می‌كند.

در مورد اشیایی(object) كه ویژگی tag را دارند می‌توان با استفاده از تابع findobj دستگیره شی مورد نظر و در نتیجه بقیه ویژگیهای آن را پیدا كرد.

function test_tag

    fig=figure ('tag','1');

    test1

    test2

    find_tag('1')

    find_tag('2')

    find_tag('3')

function test1

    fig=figure ('tag','2');

function test2

    fig=figure ('tag','3');

function find_tag(n)

    fig=findobj ('tag',n);

    figure (fig);

    plot([1 str2num(n)])

در این مثال 4 تابع مختلف تعریف كردیم كه 3 تا از آنها تابع داخلی است.

دستور fig=findobj('tag',n) شیی را كه مقدار ویژگی tag آن برابر با n  است ، پیدا می‌كند.

دقت كنید كه مقدار ویژگی tag یك رشته است. و ما نیز در هنگام استفاده از find_tag یك رشته به درون تابع می‌فرستیم.



نوع مطلب : figure 

نویسنده :امین باشی
تاریخ:شنبه 5 شهریور 1384-09:08 ق.ظ

ساختن منوفرعی  

برای ساختن منو فرعی (submenu) كافی است كه ابتدا منوی اصلی را تعریف كرده و بعد دستگیره منوی اصلی را به عنوان پدر (parent) در  تعریف منوفرعی ذكر كینم.

 figure('menubar','none')

    f=uimenu('label','menu')

    f1=uimenu (f,'label','submenu')

    f2=uimenu(f1,'label','1')

    f3=uimenu (f1,'label','2')

اگر مطالب قبلی را خوانده باشید به یاد دارید كه یك حالت استفتده از تابع uimenu به صورت زیر بوده است.

uimenu (parent,'PropertyName',PropertyValue,…)

handle = uimenu(parent,'PropertyName',PropertyValue,…)

در مثال بالا نیز با استفاده از این حالت یك منوی فرعی تعریف نمودیم.

با استفاده از این شكل تابع uimenu می‌توان برای ContextMenu (با راست كلیك فعال می‌شود) نیز منوی فرعی تولید كرد.

cmenu = uicontextmenu;

    f1=uimenu (cmenu,'label','submenu');

    f2=uimenu (f1,'label','1');

    f3=uimenu (f1,'label','2');

    set (gcf,'UIContextMenu',cmenu)

 



نوع مطلب : uimenu 

نویسنده :امین باشی
تاریخ:شنبه 5 شهریور 1384-01:08 ق.ظ

Uimenu

با استفاده ار این تابع می‌توانید برای پنجره ها منو بسازید.

طرز كار این تلبع بسیار ساده است . البته مثل اكثر توابع گرافیكی تعداد زیادی آرگومان(ویژگی‌) دارد.

uimenu ('PropertyName',PropertyValue,...)

uimenu (parent,'PropertyName',PropertyValue,...)

handle = uimenu('PropertyName',PropertyValue,...)

handle = uimenu(parent,'PropertyName',PropertyValue,...)

در تمام توابعی كه آرگومانهایی از نوع زوجهای name/property (مثل figure یا axes یا همین uimenu )قبول می‌كنند، می توان آرگومانها را به صورت structure یا cell arrays استفاده كرد.

محل قرار گرفتن منو به ویژگی menubar (مربوط به figure )

بستگی دارد. اگر مقدار این ویژگی برابر با figure  باشد منو های ساخته شده به ترتیب پشت سر هم بعد از آخرین منو‌ی پنجره (منوی help ) قرار می‌گیرد و اگر مقدار این ویژگی برابربا none  باشد منوهای ساخته شده تنها منوی پنجره می‌باشد.البته با استفاده از ویژگی position می‌شود محل قرار گرفتن منو را تنظیم كرد. مقدار این ویژگی یك عدد طبیعی است .

f = uimenu ('Label','exit', 'Position',[2]);

 به محل قرار گرفتن منو دقت كنید .

معمولا همه‌ی منوها درای یك لیست هستند كه با كلیك كردن با آن باز می‌شود.

باری ساختن یك زیر منو از ویژگی parent استفاده می‌كنیم مقدار این ویژگی برابر با دستگیره منوی اصلی است.

f1=uimenu (f,'label','exit')

با استفاده از ویژگی  Callback عمل انچام شده توسط منو را كنترل می‌كنند

Set (f1,'callback','closereq')

می توان برای سریع تر شدن كار از میانبر برای ویژگی callback استفاده كرد . این كار ار با استفاده از ویژگی Accelerator انجام می‌دهیم به این صورت كه مقدار این ویژگی برابر با یك كاراكتراست . كه با فشردن ctrl و كاراكتر مورد نظر عمل تعین شده توسط callback انجام می‌شود. البته در سیستم عامل ویندوز استفاده از كاراكتر های c, x, v مجاز نیست.

set (f1,'Accelerator','4')

با زدن همزمان دكمه‌های ctrl+4 پنجره بسته می‌شود



نوع مطلب : uimenu 

نویسنده :امین باشی
تاریخ:جمعه 4 شهریور 1384-01:08 ق.ظ

Pop-up

ویژگی deletefcn كنترل كننده‌‌ی عمل انجام شده در هنگام بسته شده پنجره است فرق آن با ویژگی CloseRequestFcn آن است كه ویژگی deletefcn در بسته شدن پنجره دخالت

 نمی كند اما  CloseRequestFcn كنترل كتتده‌ی بسته شدن پنجره است و با استفاده از آن

می‌توان جلوی بسته شدن آن را گرفت.

برای ساختن pop-up اول باید یك تابع بازگشتی داشته باشیم.

fig=@()figure('WindowStyle','modal','createfcn','ezplot(''sin'')','deletefcn','fig()');

به ویژگی deletefcn توجه كنید. مقدار این ویژگی خود تلیع fig است.

حالا كافی است كه تابع fig را اجرا كنیم اما دقت كنید كه از دست پنجره‌ی ایجاد شده نمی‌توانید راحت شوید هر بار كه آن را به بندید دوباره باز می‌شود. حتی نمی توانید از مطلب خارج شوید. الیته این مشكل مثل دفعه قبل كه با ویژگی CloseRequestFcn این كار را كردیم نیست. در حالت فبل یا یك دستور set می توانستیم مشكل را حل كنیم اما این بار لازم است ابتدا ctrl+c همزمان فشار دهید بعد با استفاده از set مقدار ویژگی deletefcn را تغیر دهید.

fig();

 



نوع مطلب : figure 

نویسنده :امین باشی
تاریخ:سه شنبه 1 شهریور 1384-09:08 ق.ظ

CreateFcn

با استفاده از این ویژگی می توان در هنگام ایجاد یك پنجره یا یك محور یا هر شیء دیگری كه این ویژگی را داشته باشد عمل خاصی را انجام داد.

مفدار این ویژگی در حالت پیش فرض تهی است.شما می توانید یك یا چند دستور مطلب را به عنوان مقدار این ویژگی استفاده كنید.

 

   Anonymous Functions

یكی از راهای ایجاد تابع در مطلب و ساده ترین آن استفاده از قالب Anonymous Functions می باشد.

fhandle = @(arglist) expr

در این روش در یك خط تابع تعریف می شود . fhandle دستگیره تابع است و در حقیفت نام تابع . arglist لیست آرگومانهای تابع است كه با كاما از هم جدا شده اند. و expr نشان دهنده عملی است كه تابع انجام می دهد.

sqr = @(x) x.^2;

figure ('CreateFcn','y=1:10; plot(sqr(y))');

این دستور یك پنجره ایجاد كرده و بر روی آن تابع x.^2 را رسم می كند. البته شكل حاصل یك خطه شكسته است نه یك منحنی ، برای هموارتر شدن منحنی باید تعداد نقاط آن –تعداد y ها- را بیشتر كرد.



نوع مطلب : figure 



  • تعداد صفحات :2
  • 1  
  • 2  


All right reserved©2005 Amin Bashi