Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
 
 
主题工具 显示模式
旧 2007-04-18, 21:19   #1
stealheartboy
初级会员
 
注册日期: 2007-04-14
帖子: 2
声望力: 0
stealheartboy 正向着好的方向发展
默认 【求助】这里也放个帖呵呵请大家帮忙呀!!!拜谢!!

我的毕业设计是求一维曲线(地震道记录数据)分形维数,我自各写了一个结果啥都算不出来呵呵。。。。我以前从没用过呢。。牛人们帮我改改错吧!!
以下是程序:

%求输入一维信号的计盒分形维数
%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的数据请留个言我发你邮箱好吗谢谢!!
stealheartboy 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 06:14


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.