我有一个数组,它在一段时间内存储信号样本,称为 >> sudo su hdfs
>> hive
>> create database bhaskar;
,signalArray(1:n)
是样本数。
我要将信号样本分成几个时间段,例如M段n
,(0:n/M)
,(n/M+1:2n/M+1)
我希望在每个M段中找到信号的最大值。
有没有有效的方法呢?
答案 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