Writing summation inside function handle

Hey,
I have this term
u = @(x) c(1)*f(3*(x-t(1)))+c(2)*f(3*(x-t(2)))+c(3)*f(3*(x-t(3)))+c(4)*f(3*(x-t(4)))+...
c(5)*f(3*(x-t(5)))+c(6)*f(3*(x-t(6)));
inside a function I have written. What I want is to write these six terms here using summation. So how should I go about it?

3 个评论

It depends. Is the function f vectorized? If it is, then the answer is simple, even trivial. But if you cannot pass a vector of elements to the function f and have f operate on each element independently, then the solution will be more complicated, and very different.
So everything depends on the function f, and since we are not told what f is or how it is written, then no definitive answer is possible.
Here f is also a function handle, a function of x (which I have defined as a linearly spaced vector) which returns a scalar value.
And yes I can't pass a vector of elements to f. It takes only one element at a time.

请先登录,再进行评论。

回答(1 个)

Hi Saurabh Madankar,
You can make use of the “sum” and “arrayfun” MATLAB functions to write these 6 terms using summation.
u = @(x) sum(arrayfun(@(k) c(k) * f (3 * (x - t(k))), 1:6));
Refer to the following links for further details on “sum” and “arrayfun“ functions in MATLAB.

类别

帮助中心File Exchange 中查找有关 Performance and Memory 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by