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

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

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/db50a70b/attachment.html>

Posted on the users mailing list.