MATLAB: How to place a cell array in another cell array using ‘find’

find

Hi, I have a 50×1 cell array (A = cell(50,1)), each cell has a 4×960 matrix(all elements are 0 or 1) in it, I want to this for each cell: use 'find' to extract the indices of elements equal to 1 in that matrix and then use that indices to place that matrix in a cell array 'B' that has 4 rows, 16 blocks of columns and undefined number of elements in that cell(that show the column number of that element equal to 1), here is an example: This is one of my 4×960 matrices: A{1,1} =

1 0 0 0 0 0 0 0 1 0 0 0 0
1 0 0 0 0 1 0 0 0 0 1 0 0
1 0 0 0 0 1 0 0 0 0 1 0 0
1 0 0 0 0 1 0 0 0 0 1 0 0
Columns 14 through 26
0 0 0 1 0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 1 0 0 0 0 1
0 0 1 0 0 0 0 1 0 0 0 0 1
0 0 1 0 0 0 0 1 0 0 0 0 1
Columns 27 through 39
0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 1 0 0 0
Columns 40 through 52
0 1 0 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 1 0 0 0 0 1 0
0 1 0 0 0 0 1 0 0 0 0 1 0
0 1 0 0 0 0 1 0 0 0 0 1 0
Columns 53 through 65
0 0 0 0 1 0 0 0 0 0 0 0 1
0 0 0 1 0 0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 0 1 0 0 0 0
Columns 66 through 78
0 0 0 0 1 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 1 0 0 0 0 0
0 0 1 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 1 0 0 0 0 0
Columns 79 through 91
0 1 0 0 0 0 1 0 0 0 0 1 0
1 0 0 0 0 0 1 0 0 0 0 0 1
0 0 0 1 0 0 0 0 0 0 1 0 0
1 0 0 0 0 0 1 0 0 0 0 0 1
Columns 92 through 104
0 0 0 1 0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 1 0
0 0 0 0 1 0 0 0 0 0 0 1 0
0 0 0 0 0 1 0 0 0 0 0 1 0
Columns 105 through 117
1 0 0 0 0 1 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0 0 0 1 0 0
0 0 0 0 0 1 0 0 0 0 0 0 1
0 0 0 0 1 0 0 0 0 0 1 0 0
Columns 118 through 130
0 0 1 0 0 0 0 1 0 0 1 0 0
0 0 0 1 0 0 0 1 0 0 0 1 0
0 0 0 0 0 0 1 0 0 1 0 0 1
0 0 0 1 0 0 0 1 0 0 0 1 0
Columns 131 through 143
1 0 0 1 0 0 1 0 0 1 0 0 1
0 0 1 0 0 0 1 0 0 0 1 0 0
0 0 1 0 0 1 0 0 1 0 0 1 0
0 0 1 0 0 0 1 0 0 0 1 0 0
Columns 144 through 156
0 0 1 0 0 1 0 0 1 0 0 1 0
0 1 0 0 0 1 0 0 0 1 0 0 0
0 1 0 0 1 0 0 1 0 0 1 0 0
0 1 0 0 0 1 0 0 0 1 0 0 0
Columns 157 through 169
0 1 0 0 1 0 0 1 0 0 1 0 0
1 0 0 0 1 0 0 0 1 0 0 0 1
1 0 0 1 0 0 1 0 0 1 0 0 1
1 0 0 0 1 0 0 0 1 0 0 0 1
Columns 170 through 182
1 0 0 1 0 0 1 0 0 1 0 0 1
0 0 0 1 0 0 0 1 0 0 0 1 0
0 0 1 0 0 1 0 0 1 0 0 1 0
0 0 0 1 0 0 0 1 0 0 0 1 0
Columns 183 through 195
0 0 1 0 0 0 1 0 0 0 1 0 0
0 1 0 0 1 0 0 1 0 0 1 0 0
0 1 0 1 0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1 0 1 0 1
Columns 196 through 208
0 1 0 0 0 1 0 0 0 1 0 0 0
1 0 0 1 0 0 1 0 0 1 0 0 1
1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0
Columns 209 through 221
1 0 0 0 1 0 0 0 1 0 0 0 1
0 0 1 0 0 1 0 0 1 0 0 1 0
0 1 0 1 0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1 0 1 0 1
Columns 222 through 234
0 0 0 1 0 0 0 1 0 0 0 1 0
0 1 0 0 1 0 0 1 0 0 1 0 0
1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0
Columns 235 through 247
0 0 1 0 0 0 1 0 0 0 1 0 0
1 0 0 1 0 0 1 0 0 0 0 0 1
0 1 0 1 0 1 0 1 0 1 0 0 1
1 0 1 0 1 0 1 0 0 0 0 1 0
Columns 248 through 260
1 0 0 1 0 0 1 0 0 1 0 0 1
0 0 0 0 0 1 0 0 0 0 0 1 0
0 0 1 0 0 1 0 0 1 0 0 1 0
0 0 0 1 0 0 0 0 1 0 0 0 0
Columns 261 through 273
0 0 1 0 0 1 0 0 1 0 0 1 0
0 0 0 0 1 0 0 0 0 0 1 0 0
0 1 0 0 1 0 0 1 0 0 1 0 0
1 0 0 0 0 1 0 0 0 0 1 0 0
Columns 274 through 286
0 1 0 0 1 0 0 1 0 0 1 0 0
0 0 0 1 0 0 0 0 0 1 0 0 0
1 0 0 1 0 0 1 0 0 1 0 0 1
0 0 1 0 0 0 0 1 0 0 0 0 1
Columns 287 through 299
1 0 0 1 0 0 1 0 0 1 0 0 1
0 0 1 0 0 0 0 0 1 0 0 0 0
0 0 1 0 0 1 0 0 1 0 0 1 0
0 0 0 0 1 0 0 0 0 1 0 0 0
Columns 300 through 312
0 0 1 0 0 1 0 0 0 0 0 1 0
0 1 0 0 0 1 0 0 0 1 0 0 0
0 1 0 0 1 0 0 0 0 0 1 0 0
0 1 0 0 0 1 0 0 0 1 0 0 0
Columns 313 through 325
0 0 0 0 1 0 0 0 0 0 1 0 0
1 0 0 0 1 0 0 0 1 0 0 0 1
0 0 0 1 0 0 0 0 0 1 0 0 0
1 0 0 0 1 0 0 0 1 0 0 0 1
Columns 326 through 338
0 0 0 1 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 1 0 0 0 1 0
0 0 1 0 0 0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 1 0 0 0 1 0
Columns 339 through 351
0 0 1 0 0 0 0 0 1 0 0 0 0
0 0 1 0 0 0 1 0 0 0 1 0 0
0 1 0 0 0 0 0 1 0 0 0 0 0
0 0 1 0 0 0 1 0 0 0 1 0 0
Columns 352 through 364
0 1 0 0 0 0 0 1 0 0 0 0 0
0 1 0 0 0 1 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0 0 1
0 1 0 0 0 1 0 0 0 1 0 0 0
Columns 365 through 377
1 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0 0 1 0 0 0
0 1 0 0 0 0 1 0 0 0 0 1 0
Columns 378 through 390
0 0 0 1 0 0 0 0 0 0 0 1 0
0 0 0 0 1 0 0 0 0 0 0 1 0
0 1 0 0 0 0 1 0 0 0 0 1 0
0 0 0 1 0 0 0 0 1 0 0 0 0
Columns 391 through 403
0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 1
0 0 0 1 0 0 0 0 1 0 0 0 0
1 0 0 0 0 1 0 0 0 0 1 0 0
Columns 404 through 416
0 1 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 0
1 0 0 0 0 1 0 0 0 0 1 0 0
0 0 1 0 0 0 0 1 0 0 0 0 1
Columns 417 through 429
0 0 0 0 1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1 0 0 0 0 1
0 0 1 0 0 0 0 1 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 1 0 0
Columns 430 through 442
0 0 0 0 0 1 0 0 0 0 0 1 0
0 0 0 0 1 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0 0 1
0 0 0 1 0 0 0 0 0 1 0 0 0
Columns 443 through 455
0 0 0 0 1 0 0 0 0 0 1 0 0
0 1 0 0 0 0 1 0 0 0 0 1 0
0 0 0 0 0 1 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 1 0 0 0 0
Columns 456 through 468
0 0 0 1 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0 0 0 1 0 0
0 1 0 0 0 0 0 1 0 0 0 0 0
Columns 469 through 481
0 0 1 0 0 0 0 0 1 0 0 0 0
1 0 0 0 0 1 0 0 0 0 1 0 0
0 0 0 1 0 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0 0 1
Columns 482 through 494
0 1 0 0 0 0 0 1 0 0 0 0 0
0 0 1 0 0 0 0 0 0 1 0 0 0
0 0 1 0 0 0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0 0 1 0 0 0
Columns 495 through 507
1 0 0 0 0 0 1 0 0 0 0 0 1
0 0 0 1 0 0 0 0 0 0 1 0 0
0 1 0 0 0 0 0 1 0 0 0 0 0
0 1 0 0 0 0 1 0 0 0 0 1 0
Columns 508 through 520
0 0 0 0 0 1 0 0 0 0 0 1 0
0 0 0 0 1 0 0 0 0 0 0 1 0
1 0 0 0 0 0 1 0 0 0 0 0 1
0 0 0 1 0 0 0 0 1 0 0 0 0
Columns 521 through 533
0 0 0 0 1 0 0 0 0 0 1 0 0
0 0 0 0 0 1 0 0 0 0 0 0 1
0 0 0 0 0 1 0 0 0 0 0 1 0
1 0 0 0 0 1 0 0 0 0 1 0 0
Columns 534 through 546
0 0 0 1 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 1 0 0 0 0 0
Columns 547 through 559
0 0 1 0 0 0 0 0 0 1 0 0 0
1 0 0 0 0 1 0 0 0 0 1 0 0
0 0 1 0 0 0 0 1 0 0 0 0 1
1 0 0 0 0 0 1 0 0 0 0 0 1
Columns 560 through 572
0 0 0 1 0 0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 1 0 0 0 0 1
0 0 0 0 1 0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0 0 1 0
Columns 573 through 585
0 0 0 0 1 0 0 0 0 0 0 1 0
0 0 0 0 1 0 0 0 0 1 0 0 0
0 1 0 0 0 0 1 0 0 0 0 1 0
0 0 0 0 1 0 0 0 0 0 1 0 0
Columns 586 through 598
0 0 0 0 0 1 0 0 0 0 0 0 1
0 1 0 0 0 0 1 0 0 0 0 1 0
0 0 0 1 0 0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 0 0 1 0 0 0
Columns 599 through 611
0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 1 0 0 0 0
1 0 0 0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 1 0 0 0 0 1
Columns 612 through 624
1 0 0 0 0 0 0 0 1 0 0 0 0
1 0 0 0 0 1 0 0 0 0 1 0 0
1 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0 0 1 0 0 0
Columns 625 through 637
0 0 0 1 0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 1 0 0 0 0 1
0 0 0 1 0 0 0 0 0 0 0 1 0
0 1 0 0 0 0 1 0 0 0 0 1 0
Columns 638 through 650
0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 1 0 0 0 0

Best Answer

If I understood correctly:
Ax = randi([0 1], 4, 960); %Demo data. No way I'm reformating your example to make it valid matlab syntax.
[row, col] = find(A);
blockidx = discretize(col, 1:60:size(A, 2));
Bx = accumarray([row, blockidx], col, [], @(c) {sort(c).'})
Note: I'm not working on the whole cell array here, just one of these 4x960 matrix as I've not understood what that had to do with the question. Possibly, you just want to above in a loop (or cellfun) operating over each element of the cell array.