2010-02-20 536 views

回答

1

在查看和搜索文档后,我的答案是否定的:您必须使用第三方实现之一。

最可能的候选人将是interp家庭功能,他们没有实现贝塞尔插值。

+0

Thx。正如我在另一个答案中所说:我实际上问这是因为我看到我的儿子在Matlab中自己编写一个贝塞尔曲线,我知道每个绘图程序都实现了这个功能,所以我觉得像Matlab这样的程序也应该有这个功能。 – Edelcom 2010-02-20 10:40:34

3

与曲线拟合工具箱,MATLAB支持B样条曲线,这是贝塞尔曲线的推广。一个没有内部节点的有理B样条是Bézier样条。

例如

p = spmak([0 0 0 1 1 1],[1 0;0 1]); 
fnplt(p) 

将绘制在(0,0),(1,0),(1,1),(0,1)与控制点的贝塞尔曲线。

0

以下代码基于此link

function B = bazier(t, P) 
    %Bazier curve 
    % Parameters 
    % ---------- 
    % - t: double 
    % Time between 0 and 1 
    % - C: 2-by-n double matrix 
    % Control points 
    % 
    % Returns 
    % ------- 
    % - B: 2-by-1 vector 
    % Output point 

    B = [0, 0]'; 

    n = size(P, 2); 
    for i = 1:n 
     B = B + b(t, i - 1, n - 1) * P(:, i); 
    end 
end 

function value = b(t, i, n) 
    value = nchoosek(n, i) * t^i * (1 - t)^(n - i); 
end