Filter löschen
Filter löschen

Any ideas how i can reduce the execution time?

1 Ansicht (letzte 30 Tage)
Dennis_Pana
Dennis_Pana am 19 Jul. 2016
Beantwortet: Dennis_Pana am 20 Jul. 2016
newdes=[0.6250 0.8750; 0.2500 0.7500; 0.3750 0.1250;
0.8750 0.3750; 0.1250 0.6250; 0 0; 0.5000 0.5000; 0.7500 0.2500;
0.6875 0.0625; 0.0625 0.8125; 0.1875 0.6875; 0.3125 0.3125;
0.4375 0.9375; 0.5625 0.5625; 0.9375 0.1875; 0.8125 0.4375;] ;
dis=zeros(v,1);
v=16;
m=2;
sum=0
s=2;
for j=1:v
for k=1:m
ddii=(newdes(s,k)-newdes(j,k))^2;%Distance calculation of point s at its new location with all the other points.
sum=sum+ddii;
end
dis(j,1)=sum; %Store all the distances.
sum=0;
end
I am trying to use bxsfun, but i cannot solve it. I want reduce the time effort. Thank you in advance.

Akzeptierte Antwort

Dennis_Pana
Dennis_Pana am 20 Jul. 2016
xx=bsxfun(@minus,newdes(s,:),newdes(1:v,:));
sbs=xx.^2;
dis(:,1)=sum(sbs,2);
That is what i was looking for.

Weitere Antworten (1)

Azzi Abdelmalek
Azzi Abdelmalek am 19 Jul. 2016
newdes=[0.6250 0.8750; 0.2500 0.7500; 0.3750 0.1250;
0.8750 0.3750; 0.1250 0.6250; 0 0; 0.5000 0.5000; 0.7500 0.2500;
0.6875 0.0625; 0.0625 0.8125; 0.1875 0.6875; 0.3125 0.3125;
0.4375 0.9375; 0.5625 0.5625; 0.9375 0.1875; 0.8125 0.4375;] ;
[nn,mm]=size(newdes)
v=16;
m=2;
s=2;
ay=repmat(1:m,1,v)
ax=s*ones(1,numel(ay))
idx1=sub2ind([nn mm],ax',ay')
[xx,yy]=meshgrid(1:v,1:m)
idx2=sub2ind([nn mm],xx(:),yy(:))
ww=(newdes(idx1)-newdes(idx2)).^2 %Distance calculation of point s at its new location with all the other points.
dis1=sum(reshape(ww,2,[]))'
  5 Kommentare
Azzi Abdelmalek
Azzi Abdelmalek am 19 Jul. 2016
Bearbeitet: Azzi Abdelmalek am 19 Jul. 2016
I made some improvement, but it's less faster. Sometimes for loop is more efficient!
[nn,mm]=size(newdes);
s=2;
ay=repmat(1:mm,nn,1);
ax=s*ones(size(ay));
idx1=reshape(sub2ind([nn mm],ax',ay'),mm,[]);
[xx,yy]=meshgrid(1:v,1:m);
idx2=sub2ind([nn mm],xx,yy);
ww=(newdes(idx1)-newdes(idx2)).^2 ; %Distance calculation of point s at its new location with all the other points.
dis1=sum(ww)';
Dennis_Pana
Dennis_Pana am 19 Jul. 2016
Thank you for your effort. I will try to find a way to improve the time efficiency. Thanks again

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Descriptive Statistics finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by