在Matlab中,给定一个向量A(请在这里找到它:https://www.dropbox.com/s/otropedwxj0lki7/A.mat?dl=0),我怎样才能找到范围最小(或标准差)的n样本向量子集?
我正在尝试一种潜在的解决方案:在列中重塑矢量,执行每列的范围并选择最小的。但是,当应用于具有不同长度的其他示例时,重塑并不总是有效。如何以更简单,更有效的方式解决这个问题?
Fs = 1000; % sampling frequency
time = round(length(A)/Fs)-1; % calculate approximated rounded total length in time
A_reshaped = reshape(A(1:time*Fs), [], time/2); % reshape A (deleting some samples at the end) in time/2 columns
D(1,:) = mean(A_reshaped);
D(2,:) = range(A_reshaped);
[~,idx] = min(D(2,:));
Value = D(1,idx);
非常感谢任何帮助。
答案 0 :(得分:0)
要查找具有最小范围的n样本,您可以对向量进行排序,并从最后一节中减去排序向量的第一部分。然后使用最小值索引找到n样本:
n=4
a= rand(1,10);
s= sort(a);
[~,I]=min(s(n:end)-s(1:end-n+1))
result = s(I:I+n-1)