Extract first and last row of each subarray in a cell array
Mostra commenti meno recenti
Hello, if I have a 7×1 cell array, how could I extract the first and last row of each sub-array.
So if my cell looks like this:

I would like to end up with a matrix that looks like this (I put spaces so it is more clear what I want from each sub-array) :
50.0000 30.0000
50.4897 31.9177
61.0370 51.2245
61.5267 53.1422
61.5267 65.1422
60.6073 66.8252
58.5037 67.4803
54.2273 68.6080
52.1029 69.2125
51.0000 71.0000
I included the 7x1 cell array file.
Thanks.
Risposta accettata
Più risposte (2)
Walter Roberson
il 10 Apr 2023
output = cellfun(@(C) C(unique([1, end]), :), YourCellArray, 'uniform', 0)
The unique() is there to prevent it from accidentally copying data when there happens to be only one row in a cell
I believe this does what you want.
load cellArray.mat
c = cellfun(@(x)unique(x([1 end],:),"row"),group1,"UniformOutput",false);
m = cell2mat(c)
The cells that have one row make this a bit tricky. The first and last row of a one-row are the same, but it looks like you don't want it listed twice. So, I use "unique" to get only one of them. But, this algorithm will fail if the first and last row of a multi-row array are identical.
Categorie
Scopri di più su Data Type Identification in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!