help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Average contents of a matrix


From: Martin Helm
Subject: Re: Average contents of a matrix
Date: Tue, 3 Mar 2009 03:27:53 +0100
User-agent: KMail/1.10.3 (Linux/2.6.27.19-3.2-default; KDE/4.1.3; x86_64; ; )

> I want to average the contents of a matrix so that each value is the
> average of all immediately adjacent values and itself: for example if I
> have a simple 4 by 4 matrix e.g. a[ 1 2 3 4
>                      5 6 7 8
>                      9 10 11 12
>                     13 14 15 16]
>
> I would like to create a 4 by 4 matrix av[] so that av[1,1] is the average
> of a[1,1], a[1,2], a[2,1] and a[2,2];
> av[3,2] is the average of a[2,1], a[2,2], a[2,3], a[3,1], a[3,2], a[3,3],
> a[4,1], a[4,2] and a[4,3]  etc...
> giving a value for av[1,1] of 3.5 and av[3,2] a value of 10
>
> Is there a function that can do this or will I have to loop through doing
> the calculations or otherwise code it?
>
> The purpose of this is to smooth a surface plot of a[] or create a surface
> plot of the smoothed version of a[], i.e. av[].

If you want to smooth the matrix, may be convolution is what you want.
The conv2 function does nearly (but not exactly) what you describe. The 
difference is the handling at the edges of the matrix.

a = some matrix

b = [1 1 1;1 1 1; 1 1 1] / 9;
a_smoothed = conv2(a, b,'same');

a_smoothed is then the same size as a.

b defines the "filter".

Or you can look at the filter functions in "Signal processing".

- mh



reply via email to

[Prev in Thread] Current Thread [Next in Thread]