select rows satisfying a particular condition
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Andrei Bobrov
2019-4-25
% 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 个评论
更多回答(1 个)
Alex Mcaulley
2019-4-25
编辑:Alex Mcaulley
2019-4-25
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Large Files and Big Data 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!