Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
1999
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 1999

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

Search the Archive

Re: Replacing Part of a Matrix

  • To: mathgroup at smc.vnet.net
  • Subject: [mg20271] Re: [mg20250] Replacing Part of a Matrix
  • From: "Tomas Garza" <tgarza at mail.internet.com.mx>
  • Date: Sun, 10 Oct 1999 01:27:28 -0400
  • Sender: owner-wri-mathgroup at wolfram.com

Wilson Figueroa wrote:

> I have a n x n matrix, call it A.
>
> I have a (n - 2)x(n - 2) matrix, call it B.
>
> I would like to keep the outer rows and columns
> of A, but repalce the inner rows and columns with
> thos of B to get a new C.
>
> I looked at the ReplacePart and other matrix and
> list manipulation rules and couldn't quite find
> one.
>
> I wrote a very gross module to do it.
>
> Does anyone have such a module in Mathematica they would
> like to share.
>
> For example,
>
> c = replace_a_b[a, b]
>
> would return the desired result.

I think it is easier if you look at your problem in terms of augmenting
matrix B with the border elements of A, instead of replacing the inner rows
and columns of A with B. Then you can use the following function of A, B and
the dimension of A -- assuming it is a square matrix:

In[1]:=
f[a_, b_, n_] :=
  Partition[
    Flatten[{First[a],
        Transpose[{Drop[Rest[First[Transpose[a]]], -1], Transpose[b],
            Drop[Rest[Last[Transpose[a]]], -1]}], Last[a]}], n]

Using the data in your example:

In[2]:=
f[a, b, 4]
Out[2]=
{{1, 2, 3, 4}, {5, 20, 40, 8}, {9, 30, 50, 12}, {13, 14, 15, 16}}

Tomas Garza
Mexico City



  • Prev by Date: Re: Replacing Part of a Matrix
  • Next by Date: Re: Finding lengths of identical sequences in lists
  • Previous by thread: Re: Replacing Part of a Matrix
  • Next by thread: Re: Re: Replacing Part of a Matrix