[R] Hadamard transformation
mohan radhakrishnan
r@dh@kr|@hn@n@moh@n @end|ng |rom gm@||@com
Tue Sep 19 06:53:38 CEST 2023
Hello,
It really helped.
Thanks.
On Mon, Sep 18, 2023 at 11:46 PM Rui Barradas <ruipbarradas using sapo.pt> wrote:
> Às 18:45 de 18/09/2023, mohan radhakrishnan escreveu:
> > Hello,
> >
> > I am attempting to port the R code which is an answer to
> >
> https://codegolf.stackexchange.com/questions/194229/implement-the-2d-hadamard-transform
> >
> >
> > function(M){for(i in 1:log2(nrow(M)))T=T%x%matrix(1-2*!3:0,2)/2;
> print(T);
> > T%*%M%*%T}
> >
> > The code, 3 inputs and the corresponding outputs are shown in
> >
> https://tio.run/##PYyxCsIwFEX3fkUcAu@VV7WvcSl2dOwi8QNqNSXQJhAqrYjfHoOIwz3D4XBDNOJYiGgerp@td9Diy/gAVlgnynr0A4MLfkkeUTdarnLq5mBXKAvON1W9J8YdZ1rmsk3T72jgV/TAVBHTAROYrs/00@jz5YSY/aOSFKmvGP1yD9sk4Wa7ARSSRowf
> >
> > These are the inputs.
> >
> > f(matrix(c(2,3,2,5),2,2,byrow=TRUE))
> > f(matrix(1,4,4))
> > f(lower.tri(diag(4),T))
> >
> > My attempt to port this R code to another framework(Tensorflow) was only
> > partially successful
> > because I didn't fully understand the cryptic R code. The second input
> > shown above works after
> > hacking Tensorflow for a long time.
> >
> > My question is this. Can anyone code this in a clear way so that I can
> > understand ? I understand
> > Kronecker Product and matrix multiplication and can port that code but I
> am
> > missing something as the same ported code does not work for all inputs.
> >
> > Thanks,
> > Mohan
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> Hello,
>
> Is this what you want?
> (I have changed the notation a bit.)
>
>
> H <- function(M){
> H0 <- 1
> Transf <- matrix(c(1, 1, 1, -1), 2L)
> for(i in 1:log2(nrow(M))) {
> H0 <- H0 %x% Transf/2
> }
> H0 %*% M %*% H0
> }
>
> x <- matrix(c(2, 3, 2, 5), 2, 2, byrow = TRUE)
> y <- matrix(1, 4, 4)
> z <- lower.tri(diag(4), TRUE)
> z[] <- apply(z, 2, as.integer)
> H(x)
> H(y)
> H(z)
>
>
>
> Hope this helps,
>
> Rui Barradas
>
>
[[alternative HTML version deleted]]
More information about the R-help
mailing list