Find negative in every n rows

1 次查看(过去 30 天)
I have a 2184 x 14 matrix. In column 1 is the datenum value and in column 14 the values that I want to consider. The other columns contain some other data.
I want to consider the first 24rows if any of the values in column 14 are negative. I want to delete the first 24rows and then repeat this for the following 24rows.

采纳的回答

Andrei Bobrov
Andrei Bobrov 2017-5-12
编辑:Andrei Bobrov 2017-5-15
One way
% A - your data [2184 x 14]
ii = ceil((1:size(A,1))'/24);
jj = accumarray(ii,A(:,14),[],@(x)all(x >= 0)); % EDIT
out = A(jj(ii),:);
  2 个评论
David du Preez
David du Preez 2017-5-15
编辑:David du Preez 2017-5-15
That does not work. It does not find any negative neither removes them. attached in the matrix in question

请先登录,再进行评论。

更多回答(1 个)

Jan
Jan 2017-5-15
编辑:Jan 2017-5-15
Data = rand(2184, 14) - 0.1; % Test data
D = reshape(Data, 24, [], 14);
Match = any(D(:, :, 14) < 0, 1);
Result = reshape(D(:, Match, :)), [], 14);

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by