[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: block version of diag function
From: |
Søren Hauberg |
Subject: |
Re: block version of diag function |
Date: |
Thu, 06 Mar 2008 18:06:06 +0100 |
tor, 06 03 2008 kl. 11:24 -0500, skrev Kamaraju S Kusumanchi:
> 1) If I have a matrix such as
>
> octave:1> A = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]
> A =
>
> 1 2 3 4
> 5 6 7 8
> 9 10 11 12
> 13 14 15 16
>
>
> diag(A) gives the diagonal elements of A. Is there any function in octave
> which will give the block diagonals of specified size.
>
> In the above example diag(A) gives
>
> octave:2> diag(A)
> ans =
>
> 1
> 6
> 11
> 16
>
>
> I am looking for something that will output
>
> 1 2 0 0
> 5 6 0 0
> 0 0 11 12
> 0 0 15 16
There might be a simpler way of doing this, but if you use the 'kron'
function, you can do something like this (untested code)
idx = kron(eye(2), ones(2));
A.*idx
and if you want the elements
A(idx)
Søren