Create a function that is the sum of an arbitrary number of functions

3 ビュー (過去 30 日間)
Thomas Schäfer
Thomas Schäfer 2019 年 10 月 18 日
コメント済み: Thomas Schäfer 2019 年 10 月 21 日
I would like to build a generate a Bezier function for a general number of Bezier points P using the equation:
ea46373831d9ae9adfa859cbcd305989980e6dc6
then
214de6a8893a07bb1ac8dbb731089f7f8f8cdaaa
I generate each term in the sum as a separate cell:
n=size(P,1)-1;
for i=0:n
Bi{i+1}=@(t) nchoosek(n,i)*(1-t).^(n-i).*t.^i*P(i+1,:)
end
this gives me a cell array of function handles.
Now I want to create the total Bezier function B(t) by adding all the terms Bi(t) but I am not sure how this is done in the best way.
Can someone give me a tip how to do this?
Thanks for answer in advance!

回答 (1 件)

Walter Roberson
Walter Roberson 2019 年 10 月 18 日
@(t) sum(cellfun(@(H) H(t), Bi))
  3 件のコメント
Walter Roberson
Walter Roberson 2019 年 10 月 18 日
What difficulty do you observe? I just tested it on some random data and it runs without error message.
Thomas Schäfer
Thomas Schäfer 2019 年 10 月 21 日
Hi
Thank you for your time. Below I have pasted the MATAB scrit that I use to try this.
P=[[1:4]',[1:4]']*3+rand(4,2); %Four points, somewhat deviating from a straight line.
n=size(P,1)-1;
for i=0:n
Bi{i+1}=@(t) nchoosek(n,i)*(1-t).^(n-i).*t.^i*P(i+1,:);
end
B=@(t) sum(cellfun(@(H) H(t), Bi));
B(.5)
I get the following error:
Capture.PNG

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeParticle & Nuclear Physics についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by