MATLAB fnplt中的矢量输入是做什么的?

MATLAB fnplt中的矢量输入是做什么的?,matlab,Matlab,说 一种[A,b]形式的向量,用于指示要执行的操作的间隔 在f中绘制一元函数 所以我认为向量[a,b]意味着绘制属于区间[a,b]的样条曲线部分s。但是下面的实验似乎不支持我的这种解释 运行 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],'

一种[A,b]形式的向量,用于指示要执行的操作的间隔 在f中绘制一元函数

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

运行

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
给我这个


如何理解结果?

样条曲线虽然由已知的
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

样条曲线的函数不是x和y的函数,而是其他参数(如arclength)的函数,因此您提供的向量就是该参数,而不是
x
y
,谢谢!那么有没有办法只绘制一部分样条曲线?就像第1点和第2点之间的那一段?绝对漂亮。非常感谢!在这个玩具箱中,我有5个输入点,最后有5个断点。但在我的实际情况中,我有n个输入点,但是n-1个断点。嗯,这会给我的for循环带来问题。有没有解释为什么会发生这种情况?没有。从我刚才做的一些实验来看,有些情况下我也只有n-2个断点。@sibbs,可能值得设置
for
循环,而不是只循环通过
断点,然后你就可以看到发生了什么。
colors = 'rgbc'

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