Mathematica 9 is now available
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: [mg99540] Re: Given a matrix, find position of first non-zero element in each
  • From: "Sjoerd C. de Vries" <sjoerd.c.devries at gmail.com>
  • Date: Thu, 7 May 2009 06:38:13 -0400 (EDT)
  • References: <gtrl9k$242$1@smc.vnet.net>

Hi Nasser,

What do you want the output to be when there is no non-zero element in
a row? The following just prints the row number, but it may not be
what you want.

A = {{0, 0, 5}, {50, 0, 100}, {0, 75, 100}, {75, 100, 0}, {0,
     75, 100}, {0, 75, 100}, {0, 0, 0}};
MapIndexed[Flatten[{#2, Position[#1, x_ /; x != 0, 1, 1]}] &, A]

Out[60]= {{1, 3}, {2, 1}, {3, 2}, {4, 1}, {5, 2}, {6, 2}, {7}}

Cheers -- Sjoers

On May 6, 11:29 am, "Nasser Abbasi" <n... at 12000.org> 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 wante=
d 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: Picking Off Lists That Have No Numbers
  • Next by Date: Re: RegionPlot3d under sampling plot points?
  • 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