Borrar filtros
Borrar filtros

Create a vector with the non-zero indices of a cell array

3 visualizaciones (últimos 30 días)
I have a cell array. I need to create a column vector that returns the non-empty row indices.
I have tried this way but there is something to improve.
idx = find(~cellfun(@isempty,matrix),1);
% idx = [2;4]; % this is the result I need to get

Respuesta aceptada

Dyuman Joshi
Dyuman Joshi el 26 de Jul. de 2023
%Random data
y = {[],[];[] repmat({rand},3,3); [] []; repmat({rand},4,3) []}
y = 4×2 cell array
{0×0 double} {0×0 double} {0×0 double} {3×3 cell } {0×0 double} {0×0 double} {4×3 cell } {0×0 double}
%Find if all cells in a row are empty or not and then negating
z1 = ~all(cellfun('isempty', y),2)
z1 = 4×1 logical array
0 1 0 1
idx1 = find(z1)
idx1 = 2×1
2 4
Another approach using any() instead of all() -
%Find if any cells in a row are not empty
z2 = any(~cellfun('isempty', y),2)
z2 = 4×1 logical array
0 1 0 1
idx2 = find(z2)
idx2 = 2×1
2 4

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by