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

1 vue (au cours des 30 derniers jours)
Thomas Schäfer
Thomas Schäfer le 18 Oct 2019
Commenté : Thomas Schäfer le 21 Oct 2019
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!

Réponses (1)

Walter Roberson
Walter Roberson le 18 Oct 2019
@(t) sum(cellfun(@(H) H(t), Bi))
  3 commentaires
Walter Roberson
Walter Roberson le 18 Oct 2019
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 le 21 Oct 2019
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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Operating on Diagonal Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by