[Date Index]
[Thread Index]
[Author Index]
Given a matrix, find position of first non-zero element in each row
*To*: mathgroup at smc.vnet.net
*Subject*: [mg99492] Given a matrix, find position of first non-zero element in each row
*From*: "Nasser Abbasi" <nma at 12000.org>
*Date*: Wed, 6 May 2009 05:29:44 -0400 (EDT)
*Reply-to*: "Nasser Abbasi" <nma at 12000.org>
This is a little problem I saw in another forum, and I am trying to also
solve it in Mathematica.
Given a Matrix, I need to find the position of the first occurance of a
value which is not zero in each row.
The position found will be the position in the orginal matrix ofcourse.
So, given this matrix,
A = {
{0, 0, 5},
{50, 0, 100},
{0, 75, 100},
{75, 100, 0},
{0, 75, 100},
{0, 75, 100}
};
The result should be
{{1, 3}, {2, 1}, {3, 2}, {4, 1}, {5, 2}, {6, 2}}
This is how I solved this problem and after a bit of struggle. I wanted to
see if I could avoid using a Table, and solve it just using Patterns and
Position and Select, but could not so far.
Table[Flatten[{i, Flatten[Position[A[[i,All]], _?(#1 != 0 & ), 1, 1]]}], {i,
1, 6}]
Out[174]= {{1, 3}, {2, 1}, {3, 2}, {4, 1}, {5, 2}, {6, 2}}
I am not happy with the above solution. I am sure there is a better one (the
above also do not work well when one row has all zeros).
Do you see a better and more elegant way to do this?
thanks,
--Nasser
Prev by Date:
**Re: programmatically rotating a function plot**
Next by Date:
**Re: defining consecutive variables**
Previous by thread:
**Re: Some function like Positionbut uses criteria, not pattern?**
Next by thread:
**Re: Given a matrix, find position of first non-zero element in each row**
| |