       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:=
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:=
f[a, b, 4]
Out=
{{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