MATLAB Answers

Housam
0

extract each ten values

Asked by Housam
on 14 Jul 2019
Latest activity Commented on by Housam
on 15 Jul 2019
Hello,
I have a 60x23 cell and each cell consist of columns with different length.
I need to extract ten values starting from last ten values, then shift by one value and repeat.
In other words, after extacting the last ten values (end-9: end), i need to omit the last value. then extract the ten values before that. so on.
What would be the best way to achieve that? Thank you for the insights.

  1 Comment

dpb
on 14 Jul 2019
As described, probably a loop just recomputing the indices.
It's not clear, however, whether this is a moving-by-one element process or in groups of ten non-overlapping elements--the end objective could possibly be accomplished for either of those by far more efficient manners -- filter for the first, perhaps, or reshape by the 10 factor by columns for the latter for vector processing by column.
"It all depends..."
Give us a concrete example of what you're really after...

Sign in to comment.

1 Answer

Image Analyst
Answer by Image Analyst
on 14 Jul 2019
 Accepted Answer

Try a loop to get the contents of the cells in your cell array, then extract 10 elements and move back towards the beginning of your vector one element at a time.
[rows, columns] = size(ca); % ca is your cell array with variable sized matrices in the cells.
for col = 1 : columns
for row = 1 : rows
% Get the array inside this cell from the cell array.
thisVector = ca{row, col};
% Get the size of this vector
vecCols = length(thisVector);
% Get last 10 values and move one element at a time towards the beginning of the vector.
len = length(vecCols);
for k = len - 9 : -1 : 1
last10 = vecCols(k : k+9);
% Now do something with last10.....
% I don't know what that would be - you haven't told us.
end
end
end

  1 Comment

Housam
on 15 Jul 2019
Thank you! this is what i was looking for.

Sign in to comment.