24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1500  |  回复: 5

kobybry_cn

铜虫 (初入文坛)

[求助] 这个程序求多重分形维数对吗已有2人参与

clc;
clear all;
close all;
%%
%indata=inputdlg({'dla'});
a = imread('1.jpg');%%%%此处的1.jpg就是一条直线
[rows, cols] = 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:sizwidth-siz+1)
                for j=1:sizwidth-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(aq,fq,'r');
xlabel('\alpha(q)','FontSize',14);
ylabel('f(q)','FontSize',14);

[ Last edited by kobybry_cn on 2014-1-13 at 22:20 ]
回复此楼
climbing ing ing……
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kobybry_cn

铜虫 (初入文坛)

2楼2014-01-24 18:25:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

戴钢盔的猪头

木虫 (知名作家)

【答案】应助回帖

兄弟,你这么发帖不要怪没人回你,DEBUG比直接写新代码还要让人头痛!你自己运行下,如果有错,把错误报告贴上来,别人才好帮你分析。

[ 发自手机版 http://muchong.com/3g ]
3楼2014-01-24 18:59:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kobybry_cn

铜虫 (初入文坛)

呃,这个程序运行是正常的,但我觉得结果是不对的,因为结果不应该超过2……
climbing ing ing……
4楼2014-01-25 23:00:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

冰凝香

新虫 (初入文坛)

【答案】应助回帖

楼主,请问这个程序我为什么运行不了呢 sums = sum(sum(a(i:i+sizm1,j:j+sizm1)));此处超过了指数范围
5楼2014-03-10 09:44:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
6楼2015-11-09 12:33:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 kobybry_cn 的主题更新
信息提示
请填处理意见