大神帮忙分析一下多重分形为程序呗
有没有用过多重分形为呢,下载了一个程序,看不懂,不会用。大神帮我分析一下呗clear all
close all;
p1=xlsread('E:matlabdatap1');
p=p1';
C=sum(p);
nn=size(p);
a=length(p);
s=0;
%求kk=
kk=[];
kkk=1/a;
while kkk<=1
kk=;
kkk=kkk*2;
end
for q=-20:4:20
logyit=[];
logT=[];
logXq=[];
aqfz=[];
aqfm=[];
%定义了下面两个空集
fqfz=[];
fqfm=[];
for n=1:1:length(kk)
yit=kk(n);
%计算子集长度T,把3800改为现有数据长度
T=a*yit;
P=[];
X=[];
for i=1:1:1/yit
c=p((1+(i-1)*T):(i*T));
P(i)=sum(c)/C;
X(i)=^q;
end
Xq=sum(X);
logXq=;
logyit=;
logT=;
aqfz=;
aqfm=;
fqfz=;
fqfm=;
end
s=s+1;
Tq(s)=mean(diff(logXq)./diff(logyit));
aq(s)=mean(diff(aqfz)./diff(aqfm));
fq(s)=mean(diff(fqfz)./diff(fqfm));
plot(logT,logXq,'v-');
hold on
end
figure
plot(aq,fq,'o-');
figure
q=-20:4:20;
%去掉了等号
plot(q,Tq,'x-'); 说明一下什么地方看不懂吧 我这儿也有一个相关的程序,算多重分形谱的,你可以看看
%%
% Author: Tegy J. Vadakkan
% Date: 09/08/2009
% input a binary image
% the multifractal spectra is calculated based on the ideas in the paper by
% Posadas et al., Soil Sci. Soc. Am. J. 67:1361-1369, 2003
clc;
clear all;
close all;
%%
syms s;
indata=inputdlg({'input photo'});
a = imread(indata{1});
= size(a);
figure;imshow(a);
npix = sum(sum(a));
%% calculates niL which is the number of pixels in the ith box of size L
% ideas from boxcount.m by F. Moisy have been borrowed here
width = rows;
p = log(width)/log(2);
max_boxes = power(rows,2)/power(2,2);
nL = double(zeros(max_boxes,p));
for g=(p-1):-1:0
siz = 2^(p-g);
sizm1 = siz - 1;
index = log2(siz);
count = 0;
for i=1:siz:(width-siz+1)
for j=1:siz:(width-siz+1)
count = count + 1;
sums = sum(sum(a(i:i+sizm1,j:j+sizm1)));
nL(count,index) = sums;
end
end
end
%%
qran = 1;
logl = zeros(p,1);
for l=1:p
logl(l) = log(power(2,l));
end
%% normalized masses
pL = double(zeros(max_boxes,p));
for l=1:p
nboxes = power(rows,2)/power(power(2,l),2);
norm = sum(nL(1:nboxes,l));
if(norm ~= npix)
display('error');
end
for i=1:nboxes
pL(i,l) = nL(i,l)/norm;
end
end
%%
%falpha, alpha
for l=1:p
count = 0;
nboxes = power(rows,2)/power(power(2,l),2);
for q = -qran:+0.1:qran
%denominator of muiql
qsum = 0.0;
for i=1:nboxes
if(pL(i,l) ~= 0)
qsum = qsum + power(pL(i,l),q);
end
end
fqnum = 0.0;
aqnum = 0.0;
smuiqL = 0.0;
for i=1:nboxes
if(pL(i,l) ~= 0)
muiqL = power(pL(i,l),q)/qsum;
fqnum = fqnum + (muiqL * log(muiqL));
aqnum = aqnum + (muiqL * log(pL(i,l)));
smuiqL = smuiqL + muiqL;
end
end
if(uint8(smuiqL)~=1)
display('error');
end
count = count + 1;
fql(l,count) = fqnum;
aql(l,count) = aqnum;
qval(count) = q;
end
end
%%
% alpha_q
for i=1:count
line = polyfit(logl,aql(:,i),1);
aq(i) = line(1);
yfit = polyval(line,logl);
sse = sum(power(aql(:,i)-yfit,2));
sst = sum(power(aql(:,i)-mean(aql(:,i)),2));
ar2(i) = 1-(sse/sst);
end
% f_q
for i=1:count
line = polyfit(logl,fql(:,i),1);
fq(i) = line(1);
yfit = polyval(line,logl);
sse = sum(power(fql(:,i)-yfit,2));
sst = sum(power(fql(:,i)-mean(fql(:,i)),2));
fr2(i) = 1-(sse/sst);
end
figure;plot(qval,aq,'r:o',qval,fq,'g:o');grid on;
h = legend('alpha(q)','f(q)',1);
xlabel('q','FontSize',14);
%gird on;
figure;plot(aq,fq,'r:o');grid on;
xlabel('alpha(q)','FontSize',14);
ylabel('f(q)','FontSize',14);
%%T=fmaxbnd(aq,2.00,4.00);
%xt=solve(aq);
%grid on;
dy=diff(aq);
xz=solve(dy);
line=polyfit(aq,fq,2);
pfit = polyval(line,aq);
figure;plot(aq,fq,'r:o',aq,pfit,'g:o');grid on;
h = legend('f(q)','Parabolic fit to f(q)',3);
xlabel('alpha(q)','FontSize',14);
%grid on; Vickyvictoria 发表于 2015-12-16 09:42
我这儿也有一个相关的程序,算多重分形谱的,你可以看看
谢谢啦
页:
[1]