[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How do I replace this for-loop?
From: |
Martin Weiser |
Subject: |
Re: How do I replace this for-loop? |
Date: |
Sat, 5 Jul 2008 19:43:45 +0200 (CEST) |
On Fri, 4 Jul 2008, Robert Macy wrote:
What's the best way to replace this for-loop?
Given an array, n, of datapoints, such that:
size(n)
rows = 27000
columns = 2
where n(:,1) are all the integer x values, and
n(:,2) are all the integer y values,
both integer values are in the range of 1 to 101
I slowly did it this way:
output=zeros(101,101);
for i=1:27000
output( n(i,1),n(i,2) ) = output( n(i,1),n(i,2) ) + 1;
endfor
as you all know this is fairly slow.
What's a simple way to replace this for-loop?
Robert
Hi,
what about something like:
ni=zeros(27000,1);
ni=sub2ind(size(n),n(:,1),n(:,2));
ni=sort(ni);
[breaks,garbage,indeces]=find(ni-shift(ni,1);
times=breaks-shift(breaks,1);
output=zeros(101,101);
output(indeces)=times;
(I would guess that people here will come with something much more
straightforward and elegant, maybe with an one-liner.)
I have not tested that, but HTH
Martin W.
_______________________________________________
Help-octave mailing list
address@hidden
https://www.cae.wisc.edu/mailman/listinfo/help-octave
- How do I replace this for-loop?, Robert Macy, 2008/07/04
- Re: How do I replace this for-loop?,
Martin Weiser <=
- RE: How do I replace this for-loop?, de Almeida, Valmor F., 2008/07/05
- Re: How do I replace this for-loop?, Rob Mahurin, 2008/07/05
- Re: How do I replace this for-loop?, Francesco Potorti`, 2008/07/06