MATLAB Answers

0

How do I apply a function in accumarray that calls another variable

Asked by Prodip Das on 22 Mar 2019 at 23:39
Latest activity Commented on by Prodip Das on 25 Mar 2019 at 23:56
So I've recently started using accumarray and to my delight it has solved many of my problems. Here's the latest one I'm kindof stuck with presently.
I have two vectors (fairly large) X and T (X being the position and T being the time-step)
I have binned X using accumarray and from what I understand, each bin gets a number of elements from X to which accumarray then applies a @fun resulting in a scalar value for that bin. I've used @mean, @sum etc up until now, but the current problem asks for more.
What I need to do now is for each subset of array X that falls into each bin,
(a) fit a 2nd order polynomial using the corresponding T values
(b) take a derivative, find the 2nd coefficient (i.e velocity in this case -> dx/dt) and out that resulting scalar in each bin. As of now solution to (a) would give me a lead.
My current line of thought is going towards a nested accumarray, is that even possible? Any directions would be helpful. Please feel free to ask me for further clarification if I haven't clearly explained the problem.

  1 Comment

Can you give a short example of inputs and desired outputs.

Sign in to comment.

1 Answer

Answer by Walter Roberson
on 23 Mar 2019 at 0:21
 Accepted Answer

Nth = @(v,N) v(N);
output = splitapply(@(t,x) Nth(polyder(polyfit(t, x, 2))),2), T, X, bin_number)

  1 Comment

Thank you! This seems to have set me in the right direction.

Sign in to comment.