[racket] How to iterate through the arrays in a matrix?

From: Animesh Pandey (animeshpandey.etno at gmail.com)
Date: Fri Nov 28 17:29:36 EST 2014

@Alexander

That's exactly what I was looking for.
Thank you!

On Fri, Nov 28, 2014 at 5:22 PM, Animesh Pandey <
animeshpandey.etno at gmail.com> wrote:

> Hi,
> This explanation might be of some help.
>
> What I am trying to find is the Scatter Matrix of a given matrix
> "final-data".
> Since "final-data" is a list of lists and not a matrix I wrote the
> following
> functions:
>
> ;; l is a list
> ;; MAT-COL is 4
> (define (sub-vec l)
>   (matrix-
>    ;; l is converted to a matrix for matrix subtraction
>    (list->matrix 1 MAT-COL l)
>    ;; MEAN is a constant array/matrix
>    (list->matrix 1 MAT-COL MEAN)))
>
> ;; computes the product of the result of "sub-vec" and its transpose which
> is a
> ;; (MAT-COL X MAT-COL) dimension matrix for each iteration and then sums up
> ;; all the matrices in to one which is the scatter matrix
> (define scatter-matrix
>   (apply matrix+ (map
>                   (λ(l)
>                     (matrix* (matrix-transpose (sub-vec l)) (sub-vec l)))
>                   final-data)))
>
> I am sorry I really don't have any examples for this.
>
>
> On Fri, Nov 28, 2014 at 5:10 PM, Daniel Prager <daniel.a.prager at gmail.com>
> wrote:
>
>> Could you please give a few examples, with inputs and desire outputs?
>>
>> Dan
>> On Nov 29, 2014 8:57 AM, "Animesh Pandey" <animeshpandey.etno at gmail.com>
>> wrote:
>>
>>> (map
>>>  (λ(i)
>>>    (matrix-
>>>     (list->matrix 1 4 i)
>>>     (list->matrix 1 4 arr)))
>>>  final-data)
>>>
>>> I used this method where final-data is a list of lists and I iterate
>>> through each list, convert it to a matrix and then subtract a pre-defined
>>> constant list to it. What I really need is a way to iterate through a
>>> matrix and not a list of lists as I have do to a lot of matrix operations.
>>>
>>>
>>> On Fri, Nov 28, 2014 at 4:41 PM, Animesh Pandey <
>>> animeshpandey.etno at gmail.com> wrote:
>>>
>>>> Hi,
>>>> I have a 80 X 4 matrix. I have iterate through each row and subtract
>>>> each row with another array at each iteration. At first I thought to
>>>> convert all array to list and do all the operations and then again convert
>>>> the final list if lists to a matrix. But I somehow think that is not a
>>>> suited way. I tried using "for*/matrix" but could not get it right. Could
>>>> any one give an example on how to iterate a matrix (array for arrays)?
>>>>
>>>> My matrix looks like this:
>>>> > (list*->matrix final-data)
>>>> (array
>>>>  #[#[5.1 3.5 1.4 0.2]
>>>>    #[4.9 3.0 1.4 0.2]
>>>>    #[4.7 3.2 1.3 0.2]
>>>>    #[4.6 3.1 1.5 0.2]
>>>>    #[5.0 3.6 1.4 0.2]
>>>>    #[5.4 3.9 1.7 0.4]
>>>>    #[4.6 3.4 1.4 0.3]
>>>>    #[5.0 3.4 1.5 0.2]
>>>>    #[4.4 2.9 1.4 0.2]
>>>>    #[4.9 3.1 1.5 0.1]
>>>> ...........
>>>>
>>>> Thanks!
>>>>
>>>
>>>
>>> ____________________
>>>   Racket Users list:
>>>   http://lists.racket-lang.org/users
>>>
>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20141128/2263c9b1/attachment.html>

Posted on the users mailing list.