comp.lang.ada
 help / color / mirror / Atom feed
From: "Nasser M. Abbasi" <nma@12000.org>
Subject: Re: Any easy/build-in construct to extract submatrices from larger matrix?
Date: Mon, 25 Jun 2012 01:32:30 -0500
Date: 2012-06-25T01:32:30-05:00	[thread overview]
Message-ID: <js90lt$6ov$1@speranza.aioe.org> (raw)
In-Reply-To: js8tsr$hnb$1@dont-email.me

On 6/25/2012 12:44 AM, J-P. Rosen wrote:
> Le 24/06/2012 19:14, Nasser M. Abbasi a �crit :
>
> If you want to avoid "if" in "loop":
>
>>> If you want a function which would return a submatrix obtained by
>>> removing
>>> the row I and column J:
>>
>   function Exclude (A : Complex_Matrix; I, J : Integer)
>       return Complex_Matrix is
>       AI, AJ : Integer := A'First (1);
>   begin
>       return B : Complex_Matrix (1..A'Length (1)-1, 1..A'Length (2)-1) do
>          BI := 1;
>          for AI in A'First (1) .. I-1 loop
>             BJ := 1;
>             for AJ in A'First (2) .. J-1 loop
>                B (BI, BJ) := A (AI, AJ);
>                BJ := BJ + 1;
>             end loop;
>
>             for AJ in J+1 .. A'Last (2) loop
>                B (BI, BJ) := A (AI, AJ);
>                BJ := BJ + 1;
>             end loop;
>             BI := BI + 1;
>          end loop;
>
>          for AI in I+1 .. A'Last (1) loop
>             BJ := 1;
>             for AJ in A'First (2) .. J-1 loop
>                B (BI, BJ) := A (AI, AJ);
>                BJ := BJ + 1;
>             end loop;
>
>             for AJ in J+1 .. A'Last (2) loop
>                B (BI, BJ) := A (AI, AJ);
>                BJ := BJ + 1;
>             end loop;
>             BI := BI + 1;
>          end loop;
>       end return;
>   end Exclude;
>
>


Thanks J-P. Rosen.

Ada is nice as it strongly typed and catches common errors. But
it is not as 'expressive' I am afraid as I'd like for this
sort of thing.

In Mathematica for example, I do this whole operation in one line:

---------------------------
Table[ReplacePart[A,{{i},{i,_},{_,j}}:>Sequence[]],{i,nRow},{j,nCol}];
---------------------------

That is all. This generates all submatrices from A as needed
in this problem :)

I've been learning Mathematica, and I find functional programming
really powerful vs imperative programming, but it needs much more
time getting used to.

But this is for another topic and place to discuss.

Thanks again for your input!

--Nasser



  reply	other threads:[~2012-06-25  6:32 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-24  8:05 Any easy/build-in construct to extract submatrices from larger matrix? Nasser M. Abbasi
2012-06-24  8:24 ` Dmitry A. Kazakov
2012-06-24  8:55   ` Nasser M. Abbasi
2012-06-24 11:10     ` Dmitry A. Kazakov
2012-06-24 12:16       ` Nasser M. Abbasi
2012-06-24 16:11         ` Dmitry A. Kazakov
2012-06-24 17:14           ` Nasser M. Abbasi
2012-06-24 18:33             ` Dmitry A. Kazakov
2012-06-25  5:44             ` J-P. Rosen
2012-06-25  6:32               ` Nasser M. Abbasi [this message]
2012-06-25  7:54                 ` J-P. Rosen
2012-06-25  8:20                   ` Dmitry A. Kazakov
2012-06-25 14:21                   ` Nasser M. Abbasi
2012-06-25  8:36                 ` Georg Bauhaus
2012-06-25 13:17                   ` Nasser M. Abbasi
2012-06-26 11:44                     ` Georg Bauhaus
2012-06-25 16:49                 ` Pascal Obry
2012-06-25 17:36                   ` Nasser M. Abbasi
2012-06-25 18:49                     ` stefan-lucks
2012-06-26  4:41                       ` Nasser M. Abbasi
2012-06-26  7:15                 ` Jacob Sparre Andersen
2012-06-26  9:51                   ` Nasser M. Abbasi
2012-06-25  9:33               ` Simon Wright
2012-06-26  2:48 ` Jerry
2012-06-26  4:19   ` Nasser M. Abbasi
2012-06-26  7:06   ` Nasser M. Abbasi
2012-06-26 12:54     ` Robert A Duff
2012-06-26 15:19       ` Adam Beneschan
2012-06-26 21:14         ` Robert A Duff
2012-06-27 23:42     ` Shark8
2012-06-26  7:10   ` Dmitry A. Kazakov
2012-06-26 15:06   ` Adam Beneschan
2012-06-26 21:19     ` Robert A Duff
2012-06-26 21:40       ` Adam Beneschan
2012-07-03  4:22         ` Randy Brukardt
2012-07-03  8:37           ` Dmitry A. Kazakov
2012-07-05  1:33             ` Randy Brukardt
2012-07-05  7:08               ` Dmitry A. Kazakov
2012-07-06 23:47                 ` Randy Brukardt
2012-07-07  8:22                   ` Dmitry A. Kazakov
2012-07-05 18:56               ` Adam Beneschan
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox