هاشور زدن (رنگی کردن) بخشی از منحنی های رسم شده با استفاده از دستور 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 تعریف کنیم. به مثال زیر توجه کنید :
مثال :
ابتدا دو منحنی را به صورت عادی رسم می کنیم :
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])
نتیجه :
اکنون قصد داریم بین هر دو منحنی، برای هر 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 نوشته شده در این دو خط، همان شماره نقاط نزدیک تلاقی دو نمودار است که آنها را از دیدن نمودارهای رسم شده، متوجه شده ایم.
نتیجه :
تعیین رنگ پس زمینه شکل ها با دستور whitebg در متلب :
همان طور که می دانید، نرم افزار متلب، به طور خودکار، رنگ پس زمینه شکل ها را سفید در نظر می گیرد، اما ممکن است در مواردی بخواهیم، رنگ پس زمینه شکل، رنگ دیگری باشد. در این موارد، می توانیم از دستور whitebg در متلب استفاده کنیم. باید دقت کنید که اگر رنگ پس زمینه شکل ها را تغییر دادید و دوباره خواستید به حالت اولیه، یعنی رنگ سفید، برگردید باید مجددا از دستور whitebg استفاده کرده و این بار رنگ سفید را انتخاب کنید. به مثال زیر توجه کنید :
مثال :
ابتدا شکلی را به صورت معمولی و با پس زمینه سفید، رسم می کنیم :
close all
clc
t=0:0.1:2*pi;
x=sin(t);
plot(t,x,‘^’)
نتیجه :
حال این بار با دستور whitebg ، رنگ پس زمینه را به سبز، تغییر می دهیم :
close all
clc
t=0:0.1:2*pi;
x=sin(t);
plot(t,x,‘^’)
whitebg(‘green’)
مشاهده می کنید که باید رنگ مورد نظرمان را درون پرانتز دستور whitebg بنویسیم.
نتیجه :
برای اینکه شکل هایی که از این به بعد رسم می کنیم، با پس زمینه سفید اجرا شوند، باید دستور زیر را بنویسیم :
رسم تعدادی دایره، با رنگ ها و اندازه های مختلف، با دستور scatter در متلب :
با استفاده از دستور scatter در متلب، می توانیم تعدادی دایره را با رنگ ها و اندازه های مختلف رسم کنیم. دستور scatter به صورت کلی زیر به کار می رود :
که در آن، بردار X حاوی مختصات x تمامی دایره ها (نقطه ها)، بردار Y حاوی مختصات y تمامی دایره ها (نقطه ها)، بردار S حاوی مقادیر متناظر برای تعیین اندازه دایره ها و بردار C حاوی مقادیر متناظر برای رنگ دایره ها می باشد.
به مثال زیر توجه کنید :
مثال :
close all
clc
X=1:3:90;
Y=X;
S=X;
C=X;
scatter(X,Y,S,C)
سه خط اول کدها برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب می باشد.
نتیجه :
مثال :
close all
clc
load seamount
scatter(x,y,5,z)
نتیجه :
مثال :
close all
clc
load seamount
scatter(x,y,sqrt(-z/2),[.5 0 0],‘filled’)
zoom(2)
نتیجه :
رسم تعدادی دایره در فضای سه بعدی، با رنگ ها و اندازه های مختلف، با دستور scatter3 در متلب :
با استفاده از دستور scatter3 در متلب، می توانیم تعدادی دایره را با رنگ ها و اندازه های مختلف، در فضای سه بعدی، رسم کنیم. دستور scatter3 به صورت کلی زیر به کار می رود :
که در آن، بردار X حاوی مختصات x تمامی دایره ها، بردار Y حاوی مختصات y تمامی دایره ها، بردار Z حاوی مختصات z تمامی دایره ها، بردار S حاوی مقادیر متناظر برای تعیین اندازه دایره ها و بردار C حاوی مقادیر متناظر برای رنگ دایره ها می باشد.
به مثال زیر توجه کنید :
مثال :
مثال خود نرم افزار متلب :
close all
clc
[x,y,z] = sphere(16);
X = [x(:)*.5 x(:)*.75 x(:)];
Y = [y(:)*.5 y(:)*.75 y(:)];
Z = [z(:)*.5 z(:)*.75 z(:)];
S = repmat([1 .75 .5]*10,numel(x),1);
C = repmat([1 2 3],numel(x),1);
scatter3(X(:),Y(:),Z(:),S(:),C(:),‘filled’)
view(40,35)
xlabel(‘x’)
ylabel(‘y’)
zlabel(‘z’)
نتیجه :
رسم مقادیر یک ماتریس دو بعدی به صورت شبه رنگی (شطرنجی) با دستور pcolor در متلب :
دستور pcolor در متلب، برای ترسیم مقادیر یک ماتریس، به صورت شبه رنگی (شطرنجی)، به کار می رود، به این صورت که عناصر ماتریس، به صورت شطرنجی، نمایش داده می شوند و متناسب با مقدار هر عنصر، درون خانه متناظر با آن عنصر، با یک رنگ پر می شود. به مثال زیر توجه کنید :
مثال :
close all
clc
x=-10:0.5:10;
y=-10:0.5:10;
L=length(x);
z=zeros(L,L);
for nn=1:L
for mm=1:L
z(nn,mm)= –sqrt(x(nn)^2+y(mm)^2);
end
end
pcolor(x,y,z)
xlabel(‘x’)
ylabel(‘y’)
دستور length ، برای تعیین طول یک بردار به کار می رود. از دو حلقه for ، برای ساخت ماتریس z بر حسب x و y های مختلف، استفاده کرده ایم.
نتیجه :
نکته :
چنانچه بخواهیم مقادیر عدددی متناظر با هر رنگ را بدانیم، می توانیم با دستور colorbar ، این مقادیر را در کنار شکل نمایش بدهیم. به مثال زیر توجه کنید :
مثال :
همان مثال قبل را این بار با دستور colorbar می نویسیم :
close all
clc
x=-10:0.5:10;
y=-10:0.5:10;
L=length(x);
z=zeros(L,L);
for nn=1:L
for mm=1:L
z(nn,mm)= –sqrt(x(nn)^2+y(mm)^2);
end
end
pcolor(x,y,z)
colorbar
xlabel(‘x’)
ylabel(‘y’)