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