# How to create array from old array with values greater than a specified value?

5 views (last 30 days)
Kimberly Cardillo on 15 Jun 2020
Commented: Kimberly Cardillo on 15 Jun 2020
I have a cell array called timePks as seen below. Each cell has a column of numbers and I want to create a new cell array with the values from timePks that are greater than 20. I don't want the values that are less than 20 to be in the new cell array.
[timePks{i},timeLocs{i}]=findpeaks(aefm_1(1200:1450,i));
[ss{i},tt{i}] = find(timePks{i}>20);
When I run the code above, ss{i} gives me cell arrays of the row #'s that has a value above 20 but I want it to say the value, not the row number it belongs in.

David Hill on 15 Jun 2020
for k=1:length(timePks)
newCell{k}=timePks{k}(timePks{k}>20);
end

#### 1 Comment

Kimberly Cardillo on 15 Jun 2020
Thank you! I want to be able to say the first row is larger than the second row of each cell array. if true, then the value (labeled in a new vector) is equal to 1. How do I do that?

the cyclist on 15 Jun 2020
timePks = {[10; 20; 30; 40],[5; 10; 20; 25],[1; 2; 3]};
% Output with only values greater than 20
output = cellfun(@(x)x(x>20),timePks,'UniformOutput',false)