آموزش متلب (MATLAB)
۵۴۳ آموزش
نمایش دسته بندی ها (۵۴۳ آموزش)

هاشور زدن (رنگی کردن) بخشی از منحنی های رسم شده (بالای منحنی ها، پایین منحنی ها، بین منحنی ها و ...) ، با دستور fill ، در متلب (MATLAB)

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

رسم یک چندضلعی با رنگ دلخواه با استفاده از دستور fill در متلب :

برای رسم یک چندضلعی با دستور fill در متلب، باید مختصات نقاط آن چند ضلعی را بدانیم و سپس مختصات آنها را در دو بردار X و Y بنویسیم که بردار X شامل مختصات x نقاط چندضلعی و بردار Y شامل مختصات y نقاط چند ضلعی می باشد. سپس دستور fill ، با دریافت دو بردار X و Y ، چندضلعی را رسم خواهد کرد.

به مثال زیر توجه کنید :

مثال

clear all
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 ، در متلب (MATLAB)

هاشور زدن (رنگی کردن) بخشی از یک منحنی رسم شده با دستور fill در متلب :

گاهی پیش می آید که توسط نرم افزار متلب، یک منحنی را رسم می کنیم و پس از مشاهده آن نیاز داریم که بخشی از آن را به صورت هاشورزده (رنگی) درآوریم. به عنوان مثال فرض کنید با کدهای زیر یک منحنی را رسم کنیم :


clear all
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 ، در متلب (MATLAB)

حال فرض کنید که بخواهیم بالای این منحنی را با رنگ زرد هاشور بزنیم. برای این منظور، اینگونه از دستور fill استفاده خواهیم کرد :


clear all
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 ، همان فضای بسته ای که می خواستیم رنگی شود را انتخاب کرده ایم.

نتیجه :

هاشور زدن (رنگی کردن) بخشی از منحنی های رسم شده (بالای منحنی ها، پایین منحنی ها، بین منحنی ها و ...) ، با دستور fill ، در متلب (MATLAB)

هاشور زدن (رنگی کردن) بخش های مشترک یا غیر مشترک (هر بخش دلخواه) حاصل از رسم دو منحنی :

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

مثال

ابتدا دو منحنی را به صورت عادی رسم می کنیم :


clear all
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])

نتیجه :

هاشور زدن (رنگی کردن) بخشی از منحنی های رسم شده (بالای منحنی ها، پایین منحنی ها، بین منحنی ها و ...) ، با دستور fill ، در متلب (MATLAB)

اکنون قصد داریم بین هر دو منحنی، برای هر x ، مقدار ماکزیمم y را مشخص کرده و نقاط ماکزیمم را با رنگ آبی نمایش دهیم و همچنین بالای این مقادیر ماکزیمم (بالای نمودار) را با رنگ زرد پر کنیم. برای این منظور کدهای زیر را می نویسیم :


clear all
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 نوشته شده در این دو خط، همان شماره نقاط نزدیک تلاقی دو نمودار است که آنها را از دیدن نمودارهای رسم شده، متوجه شده ایم.

نتیجه :

هاشور زدن (رنگی کردن) بخشی از منحنی های رسم شده (بالای منحنی ها، پایین منحنی ها، بین منحنی ها و ...) ، با دستور fill ، در متلب (MATLAB)

اکنون قصد داریم بین هر دو منحنی، برای هر x ، مقدار مینیمم y را مشخص کرده و نقاط مینیمم را با رنگ آبی نمایش دهیم و همچنین پایین این مقادیر مینیمم (پایین نمودار) را با رنگ زرد پر کنیم. برای این منظور کدهای متلب (MATLAB) زیر را می نویسیم :


clear all
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);
minimum=zeros(1,L);
for nn=1:L
    minimum(nn)=min(y_1(nn),y_2(nn));
end

X=[0,x,2*pi];
Y=[-2,minimum,-2];
fill(X,Y,'y')
 
plot(x(1:28),y_2(1:28),'^b');
plot(x(29:end),y_1(29:end),'+b');

ابتدا دو نمودار را به صورت معمولی رسم کرده ایم. دستور length ، تعداد عناصر بردار را مشخص می کند. سپس برداری به نام minimum تعریف کردیم که در آن برای هر x ، مقدار مینیمم y از بین دو مقدار مربوط به دو منحنی، مشخص شده است. دستور min ، مقدار مینیمم را تعیین می کند. سپس با دستور fill ، بخش پایین مقادیر مینیمم (پایین نمودار) را با رنگ زرد پر کرده ایم. در دو خط آخر نیز، با دو دستور plot ، نقاط مینیمم را دوباره، اما این بار با رنگ آبی، رسم کرده ایم. دو عدد 28 و 29 نوشته شده در این دو خط، همان شماره نقاط نزدیک تلاقی دو نمودار است که آنها را از دیدن نمودارهای رسم شده، متوجه شده ایم.

نتیجه :

هاشور زدن (رنگی کردن) بخشی از منحنی های رسم شده (بالای منحنی ها، پایین منحنی ها، بین منحنی ها و ...) ، با دستور fill ، در متلب (MATLAB)

چنانچه بخواهیم که بخش قرار گرفته در بین دو منحنی را با رنگ زرد پر کنیم و همچنین نقاط دور تا دور آن را هم با رنگ آبی نمایش بدهیم، کد متلب (MATLAB) زیر را اجرا می کنیم :


clear all
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);
minimum=zeros(1,L);
for nn=1:L
    maximum(nn)=max(y_1(nn),y_2(nn));
    minimum(nn)=min(y_1(nn),y_2(nn));
end
 
x_flip=flip(x);
maximum_flip=flip(maximum);

X=[x,x_flip];
Y=[minimum,maximum_flip];
fill(X,Y,'y')
 
plot(x,y_1,'+b');
plot(x,y_2,'^b');

برداری به نام maximum تعریف کردیم که در آن برای هر x ، مقدار ماکزیمم y از بین دو مقدار مربوط به دو منحنی، مشخص شده است. همچنین برداری به نام minimum تعریف کردیم که در آن برای هر x ، مقدار مینیمم y از بین دو مقدار مربوط به دو منحنی، مشخص شده است.

دستور flip برای معکوس کردن ترتیب عنصرهای بردارهای x و maximum به کار رفته است، زیرا وقتی می خواهیم فضای بسته مورد نظرمان که باید رنگی شود را بر اساس مختصات نقاط دور آن مشخص کنیم، باید ترتیب نقاط رعایت شود و بنابراین نقاط را به این ترتیب در نظر گرفته ایم که ابتدا نقاط مینیمم را از پایین سمت چپ نمودارها تا پایین سمت راست نمودارها ذکر نموده ایم (بردار minimum ) و سپس نقاط ماکزیمم از بالا سمت راست نمودار تا بالا سمت چپ نمودار را ذکر کرده ایم (ترتیب معکوس عنصرهای بردار maximum ).

نتیجه :

هاشور زدن (رنگی کردن) بخشی از منحنی های رسم شده (بالای منحنی ها، پایین منحنی ها، بین منحنی ها و ...) ، با دستور fill ، در متلب (MATLAB)
نویسنده علیرضا گلمکانی
شماره کلید 109
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 1 1 0
فاطمه
۱۳۹۸/۰۶/۱۴
۲۱:۳۳

عااااااااااااااااالیییییییییی بود
خیلی ممنون از زحماتتون

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)