形式为[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
给了我这个
我如何理解结果?
答案 0 :(得分:3)
样条曲线虽然由已知的x
和y
点构成,但不再是x
和y
的函数。相反,它是沿样条曲线的弧长的函数。因此,您作为fnplt
的第二个输入提供的向量是 参数的范围,而不是x
和y
。
如果要确定传递给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