select rows satisfying a particular condition
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Elysi Cochin
le 25 Avr 2019
Modifié(e) : Alex Mcaulley
le 25 Avr 2019
having a matrix of dim 5 x 10
if i give start_index = 1, and end_index = 3, i wanted to get rows starting with value of start_index and ending with end_index excluding zeros.
eg: rows 4 and 5
cell_matrix = {[1 2 3]
[1 3] }
saved to a cell matrix
0 commentaires
Réponse acceptée
Andrei Bobrov
le 25 Avr 2019
% Let A - your array.
[ii,jj,v] = find(A);
z = [ii,jj,v];
z = sortrows(z,[1,2]);
out = accumarray(z(:,1),z(:,3),[],@(x){fun(x,1,3)});
function out = fun(x,b,e)
x = x(:)';
out = [];
if isequal(x([1,end]) , [b,e]) && all(diff(x(:)) > 0)
out = x;
end
end
0 commentaires
Plus de réponses (1)
Alex Mcaulley
le 25 Avr 2019
Modifié(e) : Alex Mcaulley
le 25 Avr 2019
a = randi([0,2],5,10);
start_index = 1;
end_index = 3;
b = mat2cell(a(start_index:end_index,:),ones(1,end_index-start_index+1),size(a,2));
b = cellfun(@(x) myfun(x),b,'UniformOutput',false);
function x = myfun(x)
x(x==0) = [];
end
0 commentaires
Voir également
Catégories
En savoir plus sur Large Files and Big Data dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!