MATLAB: Delete/Extract values from nested cell arrays

arrayfunceilcellfunnested cell arrays

I have cell array X (see attachment) which is a {1×3}->{1×2}->{2×2}->{1×10}-> (sizes ranging from 5 to 27)
From the inner array, I need to extract/keep the first, middle and last value.
For example, for the attached X:
CPClear_angle{1, 1}{1, 1}{1, 1}{1, 1}
-10.4805997230720 -8.45914496472814 -6.90173932281437 -6.67445150097098 -5.60467260957554 -1.40582560357418
Keep the values: -10.4805997230720 -6.90173932281437 -1.40582560357418 and transpose them so it results in a inner array of 3×10 for all.
I do want to keep the {1×3}->{1×2}->{2×2} arragement because each cell is a different group type.
For a single array, the code below extracts the values I need
x=x(:,[1,ceil(end/2),end])
but I dont know how to apply it to the nested cells.
Thanks.

Best Answer

Using ncellfun from File Exchange
CPClear=ncellfun(@transpose,CPClear_angle);
CPClear=ncellfun(@cell2mat, CPClear,3);
CPClear=ncellfun(@keepCP, CPClear,3);
and function
function [ m ] = keepCP( x )
m=x([1,ceil(end/2),end],:);
end