我需要添加從多個數據集派生的分段多項式。有沒有一種簡單的方法來將分段多項式添加到一起而不進行插值?換句話說,給定PP1和PP2,是否有辦法生成PP3(其中PP3保持分段多項式形式)? e.g ...在MATLAB中添加分段多項式
t1 = linspace(0,1,5);
t2 = linspace(0,1,7);
pp1 = spline(t1,sin(pi*t1));
pp2 = spline(t2,t2.^2);
close all
hold on
tnew = linspace(0,1,50);
h(:,1) = plot(tnew,ppval(pp1,tnew));
plot(t1,ppval(pp1,t1),'bs')
h(:,2) = plot(tnew,ppval(pp2,tnew));
plot(t2,ppval(pp2,t2),'rs')
h(:,3) = plot(tnew,ppval(pp1,tnew)+ppval(pp2,tnew));
legend(h,{'spline of sin(\pi t)','spline of t^2','sin(\pi t)+t^2'},...
'location','northwest')
xlabel('t')
,而不是指定tnew
明確不過,我想一個新的分段多項式pp3
這實際上是pp1
+ pp2
。
'pp1'和'pp1'是包含字段'breaks'和'coefficients'的結構,它們定義了多項式片段。因此,您可以使用'mkpp'來構建一個新的分段多項式,將來自'pp1'和'pp2'的片段組合在一起。你只需要將已排序的斷點和係數傳遞給'mkpp'。唯一麻煩的部分是用等於「pp1」和「pp2」的最大順序的排序構建合成係數矩陣,對中斷進行排序(去除重複項),並將相同的排序應用到合成係數矩陣的行。 –
@LuisMendo正如你所說,排序和構建新的分段多項式很麻煩。這就是爲什麼我想知道是否有簡單的方法來做到這一點,例如具有內置功能或一些小功能組合。 – Delyle
我明白了。這是一個有趣的問題! –