MATLAB fnplt中的向量输入有什么作用?

时间:2016-10-18 01:29:35

标签: matlab

The documentation of fnplt

  

形式为[a,b]的向量,用于指示与之间隔的间隔   绘制f中的单变量函数。

所以我认为向量[a, b]意味着绘制落入区间s的样条曲线[a, b]的部分。但以下实验似乎并不支持我的解释。

运行

x = [0.16;0.15;0.25;0.48;0.67];
y = [0.77;0.55;0.39;0.22;0.21];
spcv = cscvn([x, y].');
fnplt(spcv); % plot the full curve
hold on;
fnplt(spcv,[0.3,0.4],'r'); % plot the "[0.3, 0.4] part" in RED
fnplt(spcv,[1,2],'g'); % plot the "[1, 2] part" in GREEN

给了我这个

enter image description here

我如何理解结果?

1 个答案:

答案 0 :(得分:3)

样条曲线虽然由已知的xy点构成,但不再是xy的函数。相反,它是沿样条曲线的弧长的函数。因此,您作为fnplt的第二个输入提供的向量是 参数的范围,而不是xy

如果要确定传递给fnplt的正确范围,使得每个样条曲线(在连续的输入点之间)是不同的颜色,您可以使用cscvn的输出来确定每个输入点的参数值。

spcv = cscvn([x, y].');

%          form: 'pp'
%        breaks: [0 0.4693 0.9037 1.4385 1.8746]   <---- These are the parameter values
%         coefs: [8x4 double]
%        pieces: 4
%         order: 4
%           dim: 2

具体来说,我们可以使用breaks字段来确定与每个输入点对应的参数值,我们可以循环显示这些值,以fnplt独立绘制每个部分。

colors = 'rgbc'

for k = 1:(numel(x) - 1)
    fnplt(spcv, spcv.breaks([k k+1]), colors(k));
    hold on
end

enter image description here