在MATLAB中定位大单元arrays中的多个零值

我在编写MATLAB代码时遇到了一些麻烦,这些代码需要定位我的一个单元格数组vel_data的每个单元格的vel_data ,这是一个1x430单元格,包含多个由M行x 1列组成的数据的excel表单。 我想提取最大值,以及该最大值之前和之后的每个值,直到第一个0到达一个新的单元arrays。

例如,如果数组中的第一个单元格是[3 2 1 0 2 6 4 3 0 1 0]那么它将提取值[0 2 6 4 3 0] ,并为数组中的每个单元格执行此操作。

我知道以下提取的单元格arrays的最大值,但我希望它能做到我上面提到的。

 d=dir(f); for n=1:numel(d) max_vel{n} = deal(max(vel_data{n})); end 

任何build议/示例代码将非常感激。

将第一个最大值索引提取为idx 。 然后将所有元素的索引提取为f1 。 元素的索引是0,紧接在将最大值提取为f2 。 而f3是元素的索引,它是0,紧跟在最大值之后。

 vel_data = {[3 1 0 2 6 4 0 1 0] , [1 1 0 9 3 0 4 6 9]} for n=1:numel(vel_data) data = vel_data{n}; [~,idx] = max(data); f1 = find(data==0); if isempty(f1) max_vel{n} = data; continue; end f2 = find(f1 < idx,1,'last'); f3 = find(f1 > idx,1); if isempty(f2) idx_first = 1; else idx_first =f1(f2); end if isempty(f3) idx_last = numel(data); else idx_last =f1(f3); end max_vel{n} = data(idx_first:idx_last); end