[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