Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2007-04-14
帖子: 2
声望力: 0 ![]() |
![]()
我的毕业设计是求一维曲线(地震道记录数据)分形维数,我自各写了一个结果啥都算不出来呵呵。。。。我以前从没用过呢。。牛人们帮我改改错吧!!
以下是程序: %求输入一维信号的计盒分形维数 %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的数据请留个言我发你邮箱好吗谢谢!! |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2007-05-06
帖子: 9
声望力: 0 ![]() |
![]()
怎么与我的错误一样啊
|
![]() |
![]() |
![]() |
#3 |
游客
帖子: n/a
|
![]()
y没有赋值;y=1024;
M=L-cellmax+1;这句表明什么?L既为输入样点数,cellmax是每一个窗口的数据数.那么L代表什么呢? |
![]() |
![]() |
#4 |
初级会员
注册日期: 2008-03-23
年龄: 42
帖子: 18
声望力: 18 ![]() |
![]()
问题挺大的,好像有些MATLAB的基本的东西你还不清楚。
那个yyy。。。 |
![]() |
![]() |