[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## Re: Simple Matrix Manipulation Extressions

**From**: |
Dirk Laurie |

**Subject**: |
Re: Simple Matrix Manipulation Extressions |

**Date**: |
Mon, 10 Nov 1997 11:18:28 +0200 (SAT) |

john wrote:
>* *
>* Are there any simple expressions for these octave expressions:*
>* In each case I introduce loops, multiplications or something a bit*
>* horrible to achieve something fairly simple.*
>* *
>* 5. given a (big) matrix A, and (small) vector V, for each element a*
>* of A find the number of V elements smaller than a*
>* *
>* count = zeros(size(A)) ;*
>* for r=1:n*
>* count = count + (V(r) < A) ;*
>* endfor*
>* *
>* Is there a way to avoid the loop? we can sort the V if that helps.*
>* *
>* For A a scalar we might do something like*
>* *
>* count = sum( V < A ) ;*
>* *
do_fortran_indexing=1;
[x,j]=sort(A(:)); % The method works for two vectors
[x,k]=sort([x; v(:)]);
m=1:length(k); m(k)=1:length(k);
count=A; count(j)=m(1:length(j))-(1:length(j));
I suppose this is `a bit horrible' but it does have complexity
less than length(x)*length(v) and there are no loops. It will
not work properly if the internal sorting algorithm of octave
allows equal elements to exchange places.
Dirk