Avatar billede basic.smurf Nybegynder
17. maj 2007 - 16:52 Der er 1 løsning

Optimering af smoothing i Matlab

Jeg har arbejder i øjeblikket på en stump Matlab-kode, som fjerner støj (smoother) fra et 3D-datasæt. Problemet er, at koden helst skal afvikles meget hurtigt, hvilket ikke er matlabs styrke, hvis ikke der anvendes matrix-operationer. Hvordan kan følgende kode optimeres??

data_spec = zeros(100,100);
[n_nm,n_t] = size(data_spec);
data_spec = random('unif',-1,1,n_nm,n_t);

%smoothing faktor
sm_nm = 2;
sm_t = 3;

for a=1:n_nm
    for b=1:n_t
        if (a<=sm_nm) || (a>=(n_nm-sm_nm)) || (b<=sm_t) || (b>=(n_t-sm_t))
            % korigerer for kanterne og midler
            if a<=sm_nm
                low_sm_nm = a-1;
            else
                low_sm_nm = sm_nm;
            end
            if a>=(n_nm-sm_nm)
                high_sm_nm = n_nm-a;
            else
                high_sm_nm = sm_nm;
            end
            if b<=sm_t
                low_sm_t = b-1;
            else
                low_sm_t = sm_t;
            end
            if b>=(n_t-sm_t)
                high_sm_t = n_t-b;
            else
                high_sm_t = sm_t;
            end
            spec_s(a,b)=mean(mean(data_spec(a-low_sm_nm:a+high_sm_nm,b-low_sm_t:b+high_sm_t)));
        else
            % midler, hvor der ikke er kanter
            spec_s(a,b)= mean(mean(data_spec(a-sm_nm:a+sm_nm,b-sm_t:b+sm_t)));
        end
    end
end
figure,pcolor(data_spec)
figure,pcolor(spec_s)

Mvh. Laur
Avatar billede basic.smurf Nybegynder
18. august 2010 - 14:43 #1
nå. det er lidt sent nu
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester