[Scilab-users] Regarding simple numerical operations result display.

Stefan Du Rietz sdr at durietz.se
Mon Mar 18 13:09:05 CET 2013


Hi Berns,
I am not sure if I understand exactly what you mean.

Perhaps something like this simplified example (to keep the 5 pairs 
with the largest y-values)?

x = (1:10)';
y = [1:5; 6:10]; y = y(:);
data = [x, y];
th = 1:10;   // threshold values

data // display the original data
for k=1:length(th)
   index = data(:, 2) > th(k);
   if sum(index) < 5  // too few data values left
     break
   end
   data = data(index, :)  // display this result
end

Output from the run:
  data  =
     1.     1.
     2.     6.
     3.     2.
     4.     7.
     5.     3.
     6.     8.
     7.     4.
     8.     9.
     9.     5.
     10.    10.
  data  =
     2.     6.
     3.     2.
     4.     7.
     5.     3.
     6.     8.
     7.     4.
     8.     9.
     9.     5.
     10.    10.
  data  =
     2.     6.
     4.     7.
     5.     3.
     6.     8.
     7.     4.
     8.     9.
     9.     5.
     10.    10.
  data  =
     2.     6.
     4.     7.
     6.     8.
     7.     4.
     8.     9.
     9.     5.
     10.    10.
  data  =
     2.     6.
     4.     7.
     6.     8.
     8.     9.
     9.     5.
     10.    10.
  data  =
     2.     6.
     4.     7.
     6.     8.
     8.     9.
     10.    10.

Regards
Stefan


On 2013-03-18 01:25, Berns Buenaobra wrote:
--------------------
> Hi Stefan:
>
> Maybe I should like to get some insight how to do this.
>
> What I have is two columns (or 2 column vectors) and they need to go
> in pairs say magnitude y and a position in x say P(x,y). Now what I
> wanted is to be able to detect peaks from a set threshold value - I
> would like to keep 10 values above it in memory and discard the rest.
> I I repeat the same action until I only get the highest of all these
> column vector magnitudes at the last threshold value. There is a
> uniform delta for each of the threshold value I use going from bottom up.
>
> Problem: I can detect the peaks alright but how does one ensure that
> it sticks to its position pair? Since indexing the magnitude seemed to
> a sequential location in memory and not its position?
>
> Thanks for any help.
>
> Regards,
> Berns B.
> USC Physics
>
>
>
>
> On Mon, Mar 18, 2013 at 5:24 AM, Stefan Du Rietz <sdr at durietz.se
> <mailto:sdr at durietz.se>> wrote:
>
>     But this is the ultimate solution without a loop:
>
>     -->bool2s(y>a) .* b + bool2s(~y>a) .* y
>       ans  =
>        - 11.  - 6.  - 1.    4.    100.
>
>     /Stefan
>
>
>     On 2013-03-17 22:05, Stefan Du Rietz wrote:
>     --------------------
>
>         Maybe one of the last two of these four loops was what you wanted:
>
>         -->bool2s(y>a)
>            ans  =
>               0.    0.    0.    0.    1.
>
>         -->for k=bool2s(y>a), if k, disp(b), else, disp(y), end, end
>             - 11.  - 6.  - 1.    4.    9.
>             - 11.  - 6.  - 1.    4.    9.
>             - 11.  - 6.  - 1.    4.    9.
>             - 11.  - 6.  - 1.    4.    9.
>               100.
>
>         -->for k=y, if k>a, disp(b), else, disp(y), end, end
>             - 11.  - 6.  - 1.    4.    9.
>             - 11.  - 6.  - 1.    4.    9.
>             - 11.  - 6.  - 1.    4.    9.
>             - 11.  - 6.  - 1.    4.    9.
>               100.
>
>         Here, k takes the value of each element in y:
>
>         -->for k=y, if k>a, disp(b), else, disp(k), end, end
>             - 11.
>             - 6.
>             - 1.
>               4.
>               100.
>
>         Or maybe this is easier to follow:
>
>         -->for k=1:length(y), if y(k)>a, disp(b), else, disp(y(k)),
>         end, end
>             - 11.
>             - 6.
>             - 1.
>               4.
>               100.
>
>         /Stefan
>
>         On 2013-03-17 20:46, Stefan Du Rietz wrote:
>         --------------------
>
>             Sorry,
>             I should have written (?):
>
>             A multi-element logical array is true (T) only if all
>             elements are T.
>             -->and(y>a)
>                ans  =
>                 F
>
>             /Stefan
>
>             On 2013-03-17 20:35, Stefan Du Rietz wrote:
>             --------------------
>
>                 -->y=(5*x)-1
>                    y  =
>                     - 11.  - 6.  - 1.    4.    9.
>
>                 -->y>a
>                    ans  =
>                     F F F F T
>
>                 This is F (the first element)
>
>                 /Stefan
>
>
>                 On 2013-03-17 20:23, Modestas Bunokas wrote:
>                 --------------------
>
>                     If someone will find 2 min of free time, I would
>                     be very grateful.
>                     I'm
>                     somehow getting weird result doing simple
>                     operation like:
>
>                     a=7;  b=100;  x=[-2:1:2];  y=(5*x)-1;
>                     if  y>a  then  disp(b);
>                           else  disp(y);
>                     end
>
>                     --> - 11.  - 6.  - 1.    4.    9.
>
>                     Last result (9) is wrong, it should be 100 (b). I
>                     fully understand
>                     that it's because of lack of my knowledge in
>                     programming but in few
>                     days I could not solve or even could not find any
>                     help. Because of
>                     that writing here.
>
>
>                     _________________________________________________
>                     users mailing list
>                     users at lists.scilab.org <mailto:users at lists.scilab.org>
>                     http://lists.scilab.org/__mailman/listinfo/users
>                     <http://lists.scilab.org/mailman/listinfo/users>
>
>
>                 _________________________________________________
>                 users mailing list
>                 users at lists.scilab.org <mailto:users at lists.scilab.org>
>                 http://lists.scilab.org/__mailman/listinfo/users
>                 <http://lists.scilab.org/mailman/listinfo/users>
>
>
>             _________________________________________________
>             users mailing list
>             users at lists.scilab.org <mailto:users at lists.scilab.org>
>             http://lists.scilab.org/__mailman/listinfo/users
>             <http://lists.scilab.org/mailman/listinfo/users>
>
>
>         _________________________________________________
>         users mailing list
>         users at lists.scilab.org <mailto:users at lists.scilab.org>
>         http://lists.scilab.org/__mailman/listinfo/users
>         <http://lists.scilab.org/mailman/listinfo/users>
>
>
>     _________________________________________________
>     users mailing list
>     users at lists.scilab.org <mailto:users at lists.scilab.org>
>     http://lists.scilab.org/__mailman/listinfo/users
>     <http://lists.scilab.org/mailman/listinfo/users>
>
>
>
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users
>




More information about the users mailing list