Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Given a matrix, find position of first non-zero element in each

  • To: mathgroup at smc.vnet.net
  • Subject: [mg99499] Re: Given a matrix, find position of first non-zero element in each
  • From: dh <dh at metrohm.com>
  • Date: Thu, 7 May 2009 06:30:40 -0400 (EDT)
  • References: <gtrl9k$242$1@smc.vnet.net>


Hi,

try e.g.:

Flatten@Position[#, _?(! # == 0 &), 1, 1] & /@ A

Daniel





Nasser Abbasi wrote:

> 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: Odd ordering of results?
  • Next by Date: Re: GRAPHICS IN A DO LOOP DOES NOTHING
  • Previous by thread: Re: Given a matrix, find position of first non-zero element in each
  • Next by thread: Re: Given a matrix, find position of first non-zero element in each