如果没有指定子索引,如何向矢量添加值

时间:2014-11-05 21:56:25

标签: matlab vector bezier

我正在研究Bézier曲线,以及我的代码现在看起来如何

x=[3 2 6 4 1];
y=[8 1 7 5 9];
n=length(x)-1;
scatter(x,y)
hold on

for t=0:0.01:1
    for i=0:1:n
        xt=nchoosek(n,i)*(t^i)*(1-t)^(n-1)*x(n+1);
        yt=nchoosek(n,i)*(t^i)*(1-t)^(n-1)*y(n+1);
    end
end

plot(xt,yt)
hold off

我是使用Matlab的初学者,所以我遇到了一些问题。我想知道如何制作与t相同大小的xt和yt向量(即101x1)并将它们得到的值,只要我改变,只要t是相同的,就可以将其添加到其他值。当t改变时,它们必须从0开始并添加它们在我改变时获得的值,直到它变为n。

谢谢

1 个答案:

答案 0 :(得分:2)

变量xtyt应该是向量,并且在t的每次迭代中更新其i值。尝试:

x=[3 2 6 4 1];
y=[8 1 7 5 9];
n=length(x)-1;
scatter(x,y)
hold on
T = 0:0.01:1
xt = zeros(size(T));
yt = zeros(size(T));

for idt = 1:length(T)
    t=T(idt);
    for i=0:1:n
        xt(idt)=xt(idt)+nchoosek(n,i)*(t^i)*(1-t)^(n-i)*x(i);
        yt(idt)=yt(idt)+nchoosek(n,i)*(t^i)*(1-t)^(n-i)*y(i);
    end
end

plot(xt,yt)
hold off