2017-03-04 4 views
1

ベクトルA(与えてください、ここで見つけてください):https://www.dropbox.com/s/otropedwxj0lki7/A.mat?dl=0)、どのようにして最小サンプル範囲(または標準偏差)のnサンプルベクトルを見つけることができますか?特定の条件を満たす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

最小範囲の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) 
関連する問題