首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绘制质心@每次迭代

绘制质心@每次迭代
EN

Stack Overflow用户
提问于 2011-09-10 05:57:08
回答 2查看 544关注 0票数 1

我有一个场景,在每次迭代时生成一个矩阵CC矩阵维数为2xn,C矩阵中的每一列为二维质心,在C矩阵中有 n 质心。

由于每次迭代都更新了C矩阵,所以更新了质心。我想画出质心1(也就是column1)的运动图。通过在点之间画一个箭头,图应该指示质心1从前一次迭代到当前迭代的移动。

我试图在matlab中使用散射函数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-10 16:47:03

请考虑以下示例:

代码语言:javascript
复制
%# matrix of centroids
n = 5;
C = rand(2,n);

%# set up graphic objects
hScatter = gscatter(C(1,:), C(2,:), 1:n, [], [], 30); hold on
hQuiver = quiver(nan,nan,nan,nan);
set(hQuiver, 'AutoScale','off', 'Color','k')
axis([-10 10 -10 10])
drawnow, pause(1)

%# update and show C each iteration
for i=1:10
    %# update centroids
    oldC = C;
    C = C + randn(size(C));

    %# update centroids to new locations
    set(hScatter, {'XData'},num2cell(C(1,:))', {'YData'},num2cell(C(2,:))')

    %# plot arrow showing movement from old to new locations
    set(hQuiver, 'XData',oldC(1,:), 'YData',oldC(2,:), ...
        'UData',C(1,:)-oldC(1,:), 'VData',C(2,:)-oldC(2,:))

    %# show iteration number
    title( sprintf('Iteration %d',i) )

    %# refresh plot
    drawnow, pause(1)
end

票数 1
EN

Stack Overflow用户

发布于 2011-09-10 14:10:41

我认为你应该看一看箭头函数,使用一些类似于plot()的东西,等等;

代码语言:javascript
复制
plot();hold on;
for i=1:iter
   arrow(C(old_iter),C(new_iter));
end;
hold off;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7369941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档