【求助】请大家帮我该该求一维曲线分形维数的matlba程序好吗!!
			 
			 
			
		
		
		
			
			我的毕业设计是求一维曲线(地震道记录数据)分形维数,我自各写了一个结果啥都算不出来呵呵。。。。我以前从没用过呢。。牛人们帮我改改错吧!! 
以下是程序: 
 
%求输入一维信号的计盒分形维数 
%y是一维信号,1024个数据 
%cellmax=128是每一个工作窗的数据个数 
%D是y的计盒维数(一般情况下D>=1),D=lim(log(N(e))/log(k/e)), 
 
cellmax=128; 
L=length(y);%输入样点的个数 
yyy=abs(y)*10000; %因为原始数据都是小数点后好几位的。。 
 
M=L-cellmax+1;  %总工作窗口的个数,每个窗口都计算各自的分形维数,最后将其组成一个数组,我要找的就是分形维数突变的那个点所在的窗口 
  
 for m=1:M 
 
 
  tseg=[m:cellmax+m-1]; 
  y_f=yyy(tseg); 
 
 
 
 
t=log2(cellmax)+1;%叠代次数  
for e=1:t 
Ne=0;%累积覆盖信号的格子的总数 
cellsize=2^(e-1);%每次的格子大小 
NumSeg(e)=cellmax/cellsize;%横轴划分成的段数 
 
for j=1:NumSeg(e) %由横轴第一个段起通过计算纵轴跨越的格子数累积N(e)  
begin=cellsize*(j-1)+1;%每一段的起始 
tail=cellsize*j; 
seg=[begin:tail];%段坐标 
yy_max=max(y_f(seg)); 
yy_min=min(y_f(seg)); 
up=ceil(yy_max/cellsize); 
down=floor(yy_min/cellsize); 
Ns=up-down;% 本段曲线占有的格子数 
Ne=Ne+Ns;%累加每一段覆盖曲线的格子数 
 
end 
 
N(e)=Ne;%记录每e下的N(e)  
end 
 
 
 
P=polyfit(log(NumSeg),log(N),1);%一次曲线拟合返回斜率和截距 
D=P(1); 
D(m)=D; 
end 
%结果就是除了开头结尾两个点有数据,其他点都是0。。。。如果想要我的y的数据请留个言我发你邮箱好吗谢谢!!
		 
		
		
		
		
		
		
		
	 |