2016-12-14 9 views
0

Akaike基準をテストしたいのですが(それは時系列のどこが大きく変化するかを示す基準です)、そうするためには、例えば等の正弦波トレンド、正または負の傾きを持つ線形トレンド、一定の傾向を、続くこれまでのところ、私はこれを行っているが、ランダムな数字で、これは次のとおりです。だから、MATLABで特定の傾向を持つデータを生成する方法

%Implementation of the Akaike method for Earth sciences. 

N=100; 
data=zeros(N,1); 

for i=1:N 
    data(i,1)=unifrnd(1,N); 
end 

%AIC=zeros(N-1,1); 
data=rand(1,N); 
for k=1:N 
    %y=datasample(data,k); 
    AIC(k,1)=k*log(var(data(1:k),1))+(N-k-1)*log(var(data(k+1:N),1)); 

end 
AIC(1)=NaN; 
%AIC(N-1)=[];AIC(N)=[]; 
%disp(AIC) 
%plot(AIC) 
subplot(2,1,1) 
plot(data,'Marker','.') 
subplot(2,1,2) 
plot(AIC,'Marker','.') 

、どのように私は別の生成することができますMATLABの異なる傾向を持つデータ?

ありがとうございます。

+0

なぜあなたはそれらのカーブから始めて、それにノイズを加えませんか? – rayryeng

+0

どのようにノイズを追加しますか?どうしたらいいですか? ) – Bicha

+0

'rand'、' randn'など – rayryeng

答えて

1

あなたができることは、まず既知のカーブで始め、次に信号がトレンドに従いますが雑音が多いようにノイズまたはランダムな値を追加します。独立した値のセットが与えられている場合は、これらを使って正弦曲線または正の傾きと一定の値を持つ正弦曲線の値を生成します。このような

何かが頭に浮かぶ:

X = 1 : N; % N is defined in your code 
Y1 = sin(X) + rand(1, N); % Sinusoidal 

slope1 = 2; intercept = 3; 
Y2 = slope1*X + intercept + rand(1, N); % Line with a positive slope 

slope2 = -1; intercept2 = 0.5; 
Y3 = slope2*X + intercept2 + rand(1, N); % Line with a negative slope 

B = 2; 
Y4 = B*ones(1, N) + rand(1, N); % Constant line 

randは一様に[0,1]間の浮動小数点値を生成するMATLAB関数です。 Y1, Y2, Y3Y4は、定義されたカーブに従うところのトレンドですが、ランダムな値を追加して、あなたが望むトレンドを完全に得られないようにし、ノイズがカーブとの類似性を減らすように設計されています定義された。類似度を減少させるためにランダム値の大きさを増加させる。

関連する問題