MATLAB:在每个数组间隔数据中找到最大值?

时间:2017-07-30 15:35:28

标签: arrays matlab max

我有一个数组,它在一段时间内存储信号样本,称为 >> sudo su hdfs >> hive >> create database bhaskar; signalArray(1:n)是样本数。

我要将信号样本分成几个时间段,例如M段n(0:n/M)(n/M+1:2n/M+1)我希望在每个M段中找到信号的最大值。

有没有有效的方法呢?

1 个答案:

答案 0 :(得分:2)

如果确保M除以n,您只需将数据重新整形为M - 行矩阵,将每个段转换为列,然后取最大值每列。

通常,如果M不一定除n,则可以应用相同的过程但可能需要使用NaN条目填充最后一个段(即列) 。这有效,因为max会忽略NaN值。

n = 21;                   % Data size
M = 4;                    % Number of segments. If M doesn't divide n, the last 
                          % segment will be shorter (and will be padded by NaN)
signalArray = rand(1,n);  % Example data
t = NaN(ceil(n/M), M);    % Define matrix of NaN's with required size
t(1:n) = signalArray;     % Fill data (in column-major order). Some entries
                          % in the last column may be left as NaN
result = max(t, [] ,1);   % Maximum of each column