منوی اصلی
مهندسی مکانیک و هوافضا
هر آنچه که یک مهندس بخواهد اینجا هست!
  • حسین اتحادی سه شنبه 15 تیر 1395 02:59 ق.ظ نظرات ()

    قبل از اینکه بخواهم نحوه ایجاد نمودارهای 2 بعدی رو به شما عزیزان بگم باید یادآوری کنم فرض من بر این هست که شما دوستان مباحث ابتدایی متلب مثل ایجاد بردارها و ماتریس ها و کار کردن با m فایل ها را بلدید. اما ان شاء الله در آینده من ابتدایی ترین مباحث رو هم خدمتتون ارائه خواهم کرد. اما فعلاً نه!

    فرض کنید که می خواهیم نمودار سینوس  را در فاصله بین صفر تا 2*pi رسم کنیم:

    t=0:0.01:2*pi;

    u=sin(t);

    گام متغیر t  را برابر با 0.01 قرار دادم تا وقتیکه نمودار سینوس کشیده میشه حالت شکسته نداشته باشه.

    دستور رسم نمودارهای دو بعدی در متلب دستور plot هستش:

    plot(t,u)

    با اجرای دستور بالا میبینید که نمودار سینوس کشیده میشه.

    دستوراتی که از الان به بعد می گویم حتما باید زیر دستور plot نوشته بشه.

    grid on    یا    grid

    دستور grid on یا grid باعث شبکه بندی صفحه مختصات میشه.

    xlabel('t')

    ylabel('u')

    title('graph u vs t ')

    legend('sin')

    دستور xlabel باعث گذاشتن برچسب بر روی محور x ها میشه. بین دو علامت ' '  هرچی بنویسید در روی محور x ها نشون داده میشه.

    دستور ylabel باعث گذاشتن برچسب بر روی محور y ها، دستور title باعث گذاشتن عنوان بر روی نمودار و دستور legend باعث گذاشتن راهنما در گوشه نمودار میشه. بین دو علامت ' ' هرچی بنویسید همون نشون داده خواهد شد.

    فرض کنید که می خواهید در روی بر چسب محور x علامت ریاضی آلفا یا بتا یا هر حرف یونانی دیگه قرار داده بشه. برای این کار در بین دو علامت ' ' کلمه alpha یا beta را تایپ میکنید و قبلش علامت \ را می گذارید:

    xlabel('\alpha')

    title('\beta')

    حال فرض کنید که می خواهید اندیس بالا یا پایین در روی نوشته هاتون داشته باشید. اندیس پایین با علامت _ ایجاد میشه و اندیس بالا با علامت ^ ایجاد میشه:

    xlabel('x_i')

    legend('R^2')

    اما فرض کنید که می خواهید بر روی برچسب محور x (یا محور y یا در عنوان و یا در راهنما) عبارت R را بنویسید که در اندیس پایین اون عبارت index باشه. شاید فکر کنید باید به صورت زیر بنویسید:

    xlabel(R_index)

    اما با این کار فقط حرف i به صورت اندیس پایین نشون داده خواهد شد. و یا مثلا اگر که بخواهید index اندیس بالا نوشته بشه دستور زیر فقط حرف i را در اندیس بالا نشان میده.

    legend('R^index')

    برای اینکه این دستور درست کار بکنه 2 راه وجود داره که راه اول کمی غیر منطقی به نظر میرسه:

    راه اول:

    xlabel(R_i_n_d_e_x)

    legend(R^i^n^d^e^x)

    این کار برای اندیسهایی که تعداد حروفشون کمه شاید به نظر غیر منطقی نیاد اما اگرکه کلمه اندیس بالا یا پایین 50 حرف باشه غیر منطقیه که بین 50 حرف از _ یا ^ استفاده کنیم. برای همین بهتره از راه دوم استفاده کنیم.

    راه دوم: در این راه عبارت اندیس را بین دو آکولاد قرار می دهیم:

    xlabel(R_{index})

    ylabel(R^{index})

    فرض کنید می خواهید در راهنمای نمودار خود عبارت آلفا به توان سیگما را نشان دهید:

    legend(\alpha^{\sigma})

    سایر علائم و حروف یونانی رو می تونید در قسمت help با جستجوی عبارت text properties در یک جدول کاملی پیدا کنید.

     

    اما متوجه شدید که نمودار وقتی کشیده شد با رنگ پیش فرض یعنی آبی کشیده شد. اگر که بخواهید رنگ نمودار را تغییر دهید باید در همان دستور plot این کار را انجام دهید:

    راه اول: تغییر رنگ به یکی از رنگهای سیاه، سفید، فیروزه ای، قرمز، سبز، آبی، زرد و بنفش.

    plot(t,u,' ')

    بین دو علامت ' ' هر کدام از حروف زیر را که بنویسید رنگ متناسب با حرف نوشته شده تغییر خواهد کرد:

    c : فیروزه ای

    m : بنفش

    b: آبی (که اگر نوشته نشود هم رنگ آبی پیش فرض می باشد)

    r: قرمز

    g: سبز

    k: سیاه

    w: سفید

    y: زرد

    برای مثال می خواهید رنگ نمودار قرمز شود:

    plot(t,u,'r')

    راه دوم: می خواهید از رنگهای ترکیبی دیگر استفاده کنید:

    plot(t,u,'color',[r g b])

    به جای سه عدد r و g و b  باید عددی بین 0 و 1 وارد کنید. عدد مربوط به r معرف رنگ قرمز، عدد مربوط به g معرف رنگ سبز و عدد مربوط به b معرف رنگ آبی میباشد. مسلما اگر سه عدد را به صورت [0 0 1] قرار دهید رنگ به صورت قرمز خواهد شد و اگر هر سه را برابر با 1 قرار دهید مشکی و اگر هر سه را برابر با 0 قرار دهید سفید خواهد شد. پش با انتخاب سه عدد بین 0 و 1 میلیونها رنگ می توانید داشته باشید:

    plot(t,u,'color',[1 0.2 0.06])

    بار دیگر به دستور ابتدایی بر می گردییم. مشاهده کردید که وقتی نمودار را کشیدید با یک ضخامت پیش فرض نمودار برای شما کشیده شد. اگر که بخواهید ضخامت را هم عوض کنید باید از دستور LineWidth در دستور plot به صورت زیر استفاده کنید:

    plot(t,u,'LineWidth',a)

    یا

    plot(t,u,'g','LineWidth',a)

    یا

    plot(t,u,'color',[1 .03 .5],'LineWidth',a)

    منظور از a عددی است که ضخامت خط نمودار را  تعیین می کنه مثلا a=2:


    آخرین ویرایش: - -
    ارسال دیدگاه
  • حسین اتحادی سه شنبه 15 تیر 1395 02:58 ق.ظ نظرات ()

    کدهای متلب :


    clear all
    close all
    clc

    x = linspace(-2,2,20);
    y = 1./(x+(1-x).^2);
    p = polyfit(x,y,3);
    xx = linspace(-2,2,100);
    plot(x,y,'.',xx,polyval(p,xx),'-','MarkerSize',30,'LineWidth',2)

    نتیجه :

    مثال شماره 16

    منبع کدها :

    کتاب MATLAB Guide - D.J. Higham - second edition - صفحه 161 از فایل pdf کتاب

    آخرین ویرایش: - -
    ارسال دیدگاه
  • حسین اتحادی سه شنبه 15 تیر 1395 02:56 ق.ظ نظرات ()

    کدهای متلب :


    clear all
    close all
    clc

    x = [0 pi/4 3*pi/8 3*pi/4 pi]; y = sin(x);
    xi = linspace(0,pi,40)';
    yn = interp1(x,y,xi,'nearest');
    yl = interp1(x,y,xi,'linear');
    ys = interp1(x,y,xi,'spline');
    yp = interp1(x,y,xi,'pchip');
    xx = linspace(0,pi,50);
    plot(xi,yn,'*', xi,yl,'+', xi,ys,'v', xi,yp,'o')
    legend('nearest','linear','spline','pchip')
    hold on
    plot(xx,sin(xx),'-',x,y,'.k','MarkerSize',30)
    set(gca,'XTick',x)set(gca,'XTickLabel','0|pi/4l3pi/8|3pi/4|pi')
    set(gca,'XGrid','on')
    axis([-0.25 3.5 -0.1 1.1])
    hold off

    نتیجه :

    مثال شماره 17

    منبع کدها :

    کتاب MATLAB Guide - D.J. Higham - second edition - صفحه 163 از فایل pdf کتاب

    آخرین ویرایش: سه شنبه 15 تیر 1395 02:58 ق.ظ
    ارسال دیدگاه
  • حسین اتحادی جمعه 11 تیر 1395 10:04 ب.ظ نظرات ()
    بعید میدونم تا بحال مفهوم سری فوریه و فضای فرکانسی رو به این زیبایی درک کرده باشید . پیشنهاد میکنم مطلب زیر رو از دست ندید .

    وقتی بچه بودیم، از کنار هم گذاشتن تکه های کوچک، شکل های مختلف می ساختیم. اگر زرنگ بودیم، وقتی  به مستطیل نیاز لگو سری فوریداشتیم و لگو مستطیل را نداشتیم. مثل شکل زیر با دو مثلث قائم الزاویه یک مربع و با دو تا مربع یک مستطیل می ساختیم. می توانستیم لوزی یا ذوزنقه هم با مثلث بسازیم. خلاصه مثلث، پایه ی تمام شکل های ما بود.
    اگر یک شکل را با مثلث نمی توانستیم، بسازیم نگاه می کردیم، که پایه لازم برای ساختن آن شکل چیست. خلاصه شکل های مورد نظر خود را از کنار هم گذاشتن قطعات پایه می ساختیم.

    تا اینکه رفتیم راهنمایی و دبیرستان، توی دبیرستان بردار یاد گرفتیم. دوباره به ما گفتند، همه بردارهای روی صفحه را می توان با کمک دو بردار پایه ساخت. ( بردار های فضائی را با سه بردار پایه و بردار های n بعدی را با n  بردار پایه می توان ساخت.) مثل شکل زیر که ساخت بردارهای دو بعدی را به کمک بردارهای پایه نشان می دهد. قبول دارید که با هزاران بردار قرمز به تنهایی نمی توان بردار آبی را ساخت. چون وقتی با چند بردار قرمز به جلو رفتیم، باید راهمان را کج کنیم و عمود بر مسیر قرمز برویم. یعنی از یک بردار عمود بر بردار قرمز استفاده کنیم. بردارهای پایه ما باید عمود برهم ( متعامد ) باشند.
    اما نمی دانم چرا بعضی از ما فکر نمی کردیم لگو بازی می کنیم، یادگرفتنش برای ما سخت شده بود. در حالی که این بار برای مان 
    بردارفایده داشت. ما برای جمع، تفریق و یا ضرب دو بردار کج و بی قواره، کافی بود با دو بردار کوچولوی قشنگ کار کنیم و فقط  چند عدد را با هم جمع یا در هم ضرب کنیم، که آن را هم کلاس سوم دبستان یاد گرفته بودیم.
    بله حق با شماست، ما فایده جمع ، تفرق و ضرب دو بردار را نمی دانستیم. یا هم فکر نکرده و یا دوست نداشتیم بدانیم چه کاربردهایی دارد. باور کنید از صنعت اتومبیل، هواپیما، کشتی، ساختمان، نجوم و ماهواره گرفته تا بازکردن یک پیچ و زدن یک مشت توی یک دعوا  کاربرد دارد.
    رفتیم دانشگاه و یک روز سر کلاس ریاضی مهندسی استاد درس بی مقدمه فرمول های زیر را روی تخته نوشت. گاهی هم نیم نگاهی به کاغذهای دستش می کرد، انگار او هم در طول عمرش جز نوشتن روی تخته، این فرمول ها به کارش نیامده بود. خیالمان راحت شد که دوای یادگرفتن این فرمول ها یا تقلب است و یا با هر جون کندنی حفظ برای دو ساعت جلسه امتحان.

    به ادامه ی مطلب مراجعه کنید

    آخرین ویرایش: جمعه 11 تیر 1395 10:08 ب.ظ
    ارسال دیدگاه
تعداد صفحات : 9 1 2 3 4 5 6 7 ...