我想测试Akaike标准(它是一个标准,给出了你在哪里得到时间序列的重大变化),但要做到这一点我需要生成数据,例如遵循正弦趋势,线性趋势具有正斜率或负斜率,恒定趋势等。到目前为止,我已经做了这个但是随机数,这是:
%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 :(得分: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
是MATLAB中的一个函数,它在[0,1]
之间统一生成浮点值。 Y1, Y2, Y3
和Y4
是您所希望的趋势,它们遵循定义的曲线,但它们会添加一些随机值,这样您就不会完全获得所需的趋势,并且噪音的设计符合减少这些曲线与您定义的曲线的相似程度。增加随机值的大小以降低相似性。