آموزش متلب (MATLAB)
هاشور زدن (رنگی کردن) بخشی از منحنی های رسم شده با استفاده از دستور fill در متلب :
با استفاده از دستور fill در متلب می توانیم بخش های دلخواهی از منحنی های رسم شده را هاشور بزنیم (رنگی کنیم) . دستور fill در واقع برای کشیدن یک چندضلعی که داخل آن با رنگ خاصی پر شده است به کار می رود اما ما از این قابلیت آن استفاده کرده و عمل هاشور زدن (رنگی کردن) بخش های دلخواه از شکل و منحنی ها را انجام خواهیم داد . ابتدا نحوه کشیدن چندضلعی با دستور fill را شرح می دهیم و سپس مثال های پیچیده تری را شرح می دهیم که در آنها بخش هایی از منحنی های رسم شده را به صورت هاشورزده (رنگی) در خواهیم آورد .
رسم یک چندضلعی با رنگ دلخواه با استفاده از دستور fill در متلب :
برای رسم یک چندضلعی با دستور fill در متلب ، باید مختصات نقاط آن چند ضلعی را بدانیم و سپس مختصات آنها را در دو بردار X و Y بنویسیم که بردار X شامل مختصات x نقاط چندضلعی و بردار Y شامل مختصات y نقاط چند ضلعی می باشد . سپس دستور fill با دریافت دو بردار X و Y ، چندضلعی را رسم خواهد کرد . به مثال زیر توجه کنید :
مثال :
close all
clc
X=[1 2 4 3];
Y=[5 2 3 7];
fill(X,Y,'b');
axis([0 5 1 8])
سه خط اول ، دستورات متداول برای عدم تداخل با برنامه های پیشین اجرا شده در متلب می باشند . دقت شود که با عبارت 'b' در پرانتز دستور fill مشخص کرده ایم که داخل چند ضلعی با رنگ آبی پر شود . با دستور axis نیز حدود محورهای مختصات را مشخص کرده ایم .
نتیجه :

هاشور زدن (رنگی کردن) بخشی از یک منحنی رسم شده با دستور fill در متلب :
گاهی پیش می آید که توسط نرم افزار متلب یک منحنی را رسم می کنیم و پس از مشاهده آن نیاز داریم که بخشی از آن را به صورت هاشورزده (رنگی) درآوریم . به عنوان مثال فرض کنید با کدهای زیر یک منحنی را رسم کنیم :
close all
clc
x=0:0.1:2*pi;
y=sin(x);
plot(x,y)
axis([0 x(end) -2 2])
منظور از x(end) ، آخرین عنصر بردار x می باشد .
نتیجه :

حال فرض کنید که بخواهیم بالای این منحنی را با رنگ زرد هاشور بزنیم . برای این منظور اینگونه از دستور fill استفاده خواهیم کرد :
close all
clc
x=0:0.1:2*pi;
y=sin(x);
plot(x,y)
X=[0,x,2*pi];
Y=[2,y,2];
fill(X,Y,'y');
axis([0 x(end) -2 2])
دقت شود که در تعریف دو بردار X و Y که به دستور fill داده می شوند ، از همان دو بردار x و y استفاده کرده ایم اما علاوه بر این ، به این دو بردار ، دو نقطه نیز اضافه کرده ایم . این دو نقطه را با توجه به همان شکل قبل مشخص کرده ایم ، یک نقطه همان نقطه گوشه بالا سمت چپ شکل با مختصات [x,y]=[0,2] می باشد که باید مختصات آن حتما در ابتدای بردارهای X و Y قرار داده شود و نقطه دوم همان نقطه گوشه بالا سمت راست شکل با مختصات [x,y]=[2*pi,2] می باشد که باید مختصات آن حتما در انتهای بردارهای X و Y قرار داده شود . خوب بنابراین با نقاط تعریف شده در بردارهای X و Y ، همان فضای بسته ای که می خواستیم رنگی شود را انتخاب کرده ایم .
نتیجه :

هاشور زدن (رنگی کردن) بخش های مشترک یا غیر مشترک (هر بخش دلخواه) حاصل از رسم دو منحنی :
در برخی موارد نیاز است که بخش های مشترک یا غیر مشترک حاصل از رسم دو منحنی را هاشور بزنیم (رنگی کنیم) . پیچیدگی این مورد خیلی بیشتر از حالت یک منحنی نیست و تنها باید حواسمان باشد که بخشی را که می خواهیم هاشور بزنیم به طور درست با دو بردار X و Y تعریف کنیم . به مثال زیر توجه کنید :
مثال :
ابتدا دو منحنی را به صورت عادی رسم می کنیم :
نتیجه :

اکنون قصد داریم بین هر دو منحنی ، برای هر x ، مقدار ماکزیمم y را مشخص کرده و نقاط ماکزیمم را با رنگ آبی نمایش دهیم و همچنین بالای این مقادیر ماکزیمم (بالای نمودار) را با رنگ زرد پر کنیم . برای این منظور کدهای زیر را می نویسیم :
close all
clc
hold on
x=0:0.1:2*pi;
y_1=sin(x);
plot(x,y_1,'+r')
y_2=0.5*x-1;
plot(x,y_2,'^g')
axis([0 x(end) -2 3])
L=length(x);
maximum=zeros(1,L);
for nn=1:L
maximum(nn)=max(y_1(nn),y_2(nn));
end
X=[0,x,2*pi];
Y=[3,maximum,3];
fill(X,Y,'y')
plot(x(1:28),y_1(1:28),'+b');
plot(x(29:end),y_2(29:end),'^b');
ابتدا دو نمودار را به صورت معمولی رسم کرده ایم . دستور length تعداد عناصر بردار را مشخص می کند . سپس برداری به نام maximum تعریف کردیم که در آن برای هر x ، مقدار ماکزیمم y از بین دو مقدار مربوط به دو منحنی مشخص شده است . دستور max مقدار ماکزیمم را تعیین می کند . سپس با دستور fill بخش بالای مقادیر ماکزیمم (بالای نمودار) را با رنگ زرد پر کرده ایم . در دو خط آخر نیز با دو دستور plot ، نقاط ماکزیمم را دوباره ، اما این بار با رنگ آبی رسم کرده ایم . دو عدد 28 و 29 نوشته شده در این دو خط ، همان شماره نقاط نزدیک تلاقی دو نمودار است که آنها را از دیدن نمودارهای رسم شده متوجه شده ایم .


