برای این منظور، باید مختصات نقاط را بر اساس دو دسته ای که تشخیص داده شده اند، در بردارهای جداگانه ای قرار داده و سپس دو بار از دستور plot برای رسم آن دو دسته استفاده کنیم. دستور hold on را هم به کار می بریم که نتیجه هر دو دستور plot ، در یک شکل رسم شود.
من کد زیر را نوشتم (خودتان هم آن را چک کنید) :
نتیجه یک سری انتخاب نقطه دلخواه :
برای مواردی که یکی از گروه ها خالی باشد (هیچ عضوی نداشته باشد)، ممکن است که دستور plot مربوط به آن، خطا بدهد، اگر قصد دارید این موارد را هم در نظر بگیرید، کدها را به گونه ای بنویسید که تنها در صورتی دستور plot اجرا شود که بردارها تهی نباشند (با دستور size و یک if ساده).
من کد زیر را نوشتم (خودتان هم آن را چک کنید) :
کد پیاچپی:
clear all
close all
clc
fig=figure(2);
axis([-10 10 -10 10]);
[x, y] = getpts(fig);
%
data=[x, y];
k=2;
% 2 group
kmeans2=kmeans(data,k)
kmeans2_size = size(kmeans2)
group_1_number=0;
group_2_number=0;
for nn=1:kmeans2_size(1)
if(kmeans2(nn)==1)
group_1_number=group_1_number+1;
group_1_x(group_1_number)=x(nn);
group_1_y(group_1_number)=y(nn);
elseif(kmeans2(nn)==2)
group_2_number=group_2_number+1;
group_2_x(group_2_number)=x(nn);
group_2_y(group_2_number)=y(nn);
end
end
hold on
plot(group_1_x,group_1_y,'r*');
plot(group_2_x,group_2_y,'g^');
نتیجه یک سری انتخاب نقطه دلخواه :
برای مواردی که یکی از گروه ها خالی باشد (هیچ عضوی نداشته باشد)، ممکن است که دستور plot مربوط به آن، خطا بدهد، اگر قصد دارید این موارد را هم در نظر بگیرید، کدها را به گونه ای بنویسید که تنها در صورتی دستور plot اجرا شود که بردارها تهی نباشند (با دستور size و یک if ساده).
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.