tanqiuheng
2009-08-16, 00:00
在编写一个程序的过程中,我明显定义一个向量的维数为N1=10,但经过中途程序赋值后,输出的结果维数却远大于N1,倒与N2维数一样,部分程序如下,希望得到达人的帮助,谢谢!
%%%%%% main %%%%%%%%
clear
tt=cputime;
N0=0;
global N;
global alpha;
global coef;
global NS_1;
global NS_2;
N=25; % number of subintervals
alpha=.7;
coef=.5;
N1=10;
NS_1=zeros(N1,1);
NS_2=zeros(N1,1);
N2=2000;
for i=1:N1
x=rand(1,1);
if x>=0.5
TSP;
d=index(X1,i);
if d==0
N0=N0+1;
end
else
DSP;
d=index(X2,i);
if d==1
N0=N0+1;
end
end
end
NS_1
NS_2
percentage=N0/N1;
percentage
tt=cputime-tt
function d=index(X,i)
global NS_1;
global NS_2;
%%%%%%%%%%%%%%%%%%%%%%%%%%% 估计a、b %%%%%%%%%%%%%%%%%%%%%%%%%%%
size_X=length(X);
T1=zeros(size_X,1);
for i=1:size_X
T1(i)=i;
end
P1=polyfit(T1,X,1); %%%%% curve-fitting coefficient%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a_estimate=P1(1,1);
b_estimate=P1(1,2);
%%%%%%%%%%%% 在原数据中减去a+bt,即X(t)-(a_estimate+b_estimate*t),记为Y(t) %%%%%%%%%%%%%%%%%%
Y1=zeros(size_X,1);
for t=1:size_X
Y1(t)=X(t)-(a_estimate+b_estimate*t);
end
Y1;
%%%%%%%%%%%%%%
The_original_entropy01=The_original_entropy(Y1);
The_entropy_is_one=The_entropy_is(Y1);
NS1=The_original_entropy01/The_entropy_is_one;
NS_1(i)=NS1
%%%%%%%%%%%%%%% 计算y(t):=X(t)-X(t-1),估计其均值Ey,计算Y2(t):=y(t)-Ey的非平稳程度%%%%%%%%
y=zeros(size_X,1);
for k=2:size_X
y(k)=X(k)-X(k-1);
end
sum=0;
for i=2:size_X
sum=sum+y(i);
end
Ey=sum/size_X;
Y2=zeros(size_X,1);
for j=2:size_X
Y2(j)=y(j)-Ey;
end
The_original_entropy02=The_original_entropy(Y2);
The_entropy_is_two=The_entropy_is(Y2);
NS2=The_original_entropy02/The_entropy_is_two;
NS_2=NS2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 比较NS1与NS2,选择小的NS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
d=0;
if NS1<=NS2
d=d;
else
d=d+1;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
index_d=d;
%%%%%% main %%%%%%%%
clear
tt=cputime;
N0=0;
global N;
global alpha;
global coef;
global NS_1;
global NS_2;
N=25; % number of subintervals
alpha=.7;
coef=.5;
N1=10;
NS_1=zeros(N1,1);
NS_2=zeros(N1,1);
N2=2000;
for i=1:N1
x=rand(1,1);
if x>=0.5
TSP;
d=index(X1,i);
if d==0
N0=N0+1;
end
else
DSP;
d=index(X2,i);
if d==1
N0=N0+1;
end
end
end
NS_1
NS_2
percentage=N0/N1;
percentage
tt=cputime-tt
function d=index(X,i)
global NS_1;
global NS_2;
%%%%%%%%%%%%%%%%%%%%%%%%%%% 估计a、b %%%%%%%%%%%%%%%%%%%%%%%%%%%
size_X=length(X);
T1=zeros(size_X,1);
for i=1:size_X
T1(i)=i;
end
P1=polyfit(T1,X,1); %%%%% curve-fitting coefficient%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a_estimate=P1(1,1);
b_estimate=P1(1,2);
%%%%%%%%%%%% 在原数据中减去a+bt,即X(t)-(a_estimate+b_estimate*t),记为Y(t) %%%%%%%%%%%%%%%%%%
Y1=zeros(size_X,1);
for t=1:size_X
Y1(t)=X(t)-(a_estimate+b_estimate*t);
end
Y1;
%%%%%%%%%%%%%%
The_original_entropy01=The_original_entropy(Y1);
The_entropy_is_one=The_entropy_is(Y1);
NS1=The_original_entropy01/The_entropy_is_one;
NS_1(i)=NS1
%%%%%%%%%%%%%%% 计算y(t):=X(t)-X(t-1),估计其均值Ey,计算Y2(t):=y(t)-Ey的非平稳程度%%%%%%%%
y=zeros(size_X,1);
for k=2:size_X
y(k)=X(k)-X(k-1);
end
sum=0;
for i=2:size_X
sum=sum+y(i);
end
Ey=sum/size_X;
Y2=zeros(size_X,1);
for j=2:size_X
Y2(j)=y(j)-Ey;
end
The_original_entropy02=The_original_entropy(Y2);
The_entropy_is_two=The_entropy_is(Y2);
NS2=The_original_entropy02/The_entropy_is_two;
NS_2=NS2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 比较NS1与NS2,选择小的NS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
d=0;
if NS1<=NS2
d=d;
else
d=d+1;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
index_d=d;