Efficient matrix-vector multiplication for “partial” Hadamard matrices

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
2
down vote

favorite












I've recently been working on an algorithm for bilinear systems in the form $y = (Lw) odot (Rx)$, where $odot$ denotes the elementwise product between two matrices of compatible sizes. In the above, we assume $w in mathbbR^d$ and $L in mathbbR^m times d$, where $m geq 2d$ at minimum.



One of the settings involves $L$ being a selection of the first $d$ columns of
a $2^k times 2^k$ Hadamard matrix (we assume that $m = 2^k$ for some $k$). Computing $L x $ can be done efficiently using the Fast Walsh-Hadamard Transform, as we can write



$$
Lx = H_k tildex = H_k beginpmatrix x \ mathbf0_m - d endpmatrix
$$



where $H_k$ is the $2^k times 2^k$ Hadamard matrix and $tildex$ is a
zero-padding of $x$ so that $tildex in mathbbR^2^k$.



I was wondering if there is a way to efficiently compute the product $L^top v$, for the same matrix $L$, (possibly using the FWHT). In the case where $d$ is a power of $2$, I think we could decompose $L^top$ using the recursive decomposition of a Hadamard matrix, and obtain something like the following:



$$
L^top v = beginbmatrix H_d & dots & H_d endbmatrix v
$$



Is my line of thinking above correct? Moreover, is there an efficient way to attack the general case, where $d$ is not a power of $2$, without the need to explicitly generate and store the matrix $L$?



I would appreciate any pointers to references and/or an implementation, if that is a common problem in signal processing.







share|cite|improve this question

























    up vote
    2
    down vote

    favorite












    I've recently been working on an algorithm for bilinear systems in the form $y = (Lw) odot (Rx)$, where $odot$ denotes the elementwise product between two matrices of compatible sizes. In the above, we assume $w in mathbbR^d$ and $L in mathbbR^m times d$, where $m geq 2d$ at minimum.



    One of the settings involves $L$ being a selection of the first $d$ columns of
    a $2^k times 2^k$ Hadamard matrix (we assume that $m = 2^k$ for some $k$). Computing $L x $ can be done efficiently using the Fast Walsh-Hadamard Transform, as we can write



    $$
    Lx = H_k tildex = H_k beginpmatrix x \ mathbf0_m - d endpmatrix
    $$



    where $H_k$ is the $2^k times 2^k$ Hadamard matrix and $tildex$ is a
    zero-padding of $x$ so that $tildex in mathbbR^2^k$.



    I was wondering if there is a way to efficiently compute the product $L^top v$, for the same matrix $L$, (possibly using the FWHT). In the case where $d$ is a power of $2$, I think we could decompose $L^top$ using the recursive decomposition of a Hadamard matrix, and obtain something like the following:



    $$
    L^top v = beginbmatrix H_d & dots & H_d endbmatrix v
    $$



    Is my line of thinking above correct? Moreover, is there an efficient way to attack the general case, where $d$ is not a power of $2$, without the need to explicitly generate and store the matrix $L$?



    I would appreciate any pointers to references and/or an implementation, if that is a common problem in signal processing.







    share|cite|improve this question























      up vote
      2
      down vote

      favorite









      up vote
      2
      down vote

      favorite











      I've recently been working on an algorithm for bilinear systems in the form $y = (Lw) odot (Rx)$, where $odot$ denotes the elementwise product between two matrices of compatible sizes. In the above, we assume $w in mathbbR^d$ and $L in mathbbR^m times d$, where $m geq 2d$ at minimum.



      One of the settings involves $L$ being a selection of the first $d$ columns of
      a $2^k times 2^k$ Hadamard matrix (we assume that $m = 2^k$ for some $k$). Computing $L x $ can be done efficiently using the Fast Walsh-Hadamard Transform, as we can write



      $$
      Lx = H_k tildex = H_k beginpmatrix x \ mathbf0_m - d endpmatrix
      $$



      where $H_k$ is the $2^k times 2^k$ Hadamard matrix and $tildex$ is a
      zero-padding of $x$ so that $tildex in mathbbR^2^k$.



      I was wondering if there is a way to efficiently compute the product $L^top v$, for the same matrix $L$, (possibly using the FWHT). In the case where $d$ is a power of $2$, I think we could decompose $L^top$ using the recursive decomposition of a Hadamard matrix, and obtain something like the following:



      $$
      L^top v = beginbmatrix H_d & dots & H_d endbmatrix v
      $$



      Is my line of thinking above correct? Moreover, is there an efficient way to attack the general case, where $d$ is not a power of $2$, without the need to explicitly generate and store the matrix $L$?



      I would appreciate any pointers to references and/or an implementation, if that is a common problem in signal processing.







      share|cite|improve this question













      I've recently been working on an algorithm for bilinear systems in the form $y = (Lw) odot (Rx)$, where $odot$ denotes the elementwise product between two matrices of compatible sizes. In the above, we assume $w in mathbbR^d$ and $L in mathbbR^m times d$, where $m geq 2d$ at minimum.



      One of the settings involves $L$ being a selection of the first $d$ columns of
      a $2^k times 2^k$ Hadamard matrix (we assume that $m = 2^k$ for some $k$). Computing $L x $ can be done efficiently using the Fast Walsh-Hadamard Transform, as we can write



      $$
      Lx = H_k tildex = H_k beginpmatrix x \ mathbf0_m - d endpmatrix
      $$



      where $H_k$ is the $2^k times 2^k$ Hadamard matrix and $tildex$ is a
      zero-padding of $x$ so that $tildex in mathbbR^2^k$.



      I was wondering if there is a way to efficiently compute the product $L^top v$, for the same matrix $L$, (possibly using the FWHT). In the case where $d$ is a power of $2$, I think we could decompose $L^top$ using the recursive decomposition of a Hadamard matrix, and obtain something like the following:



      $$
      L^top v = beginbmatrix H_d & dots & H_d endbmatrix v
      $$



      Is my line of thinking above correct? Moreover, is there an efficient way to attack the general case, where $d$ is not a power of $2$, without the need to explicitly generate and store the matrix $L$?



      I would appreciate any pointers to references and/or an implementation, if that is a common problem in signal processing.









      share|cite|improve this question












      share|cite|improve this question




      share|cite|improve this question








      edited Jul 27 at 22:13
























      asked Jul 27 at 22:01









      VHarisop

      804421




      804421

























          active

          oldest

          votes











          Your Answer




          StackExchange.ifUsing("editor", function ()
          return StackExchange.using("mathjaxEditing", function ()
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
          );
          );
          , "mathjax-editing");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "69"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: false,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          noCode: true, onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );








           

          draft saved


          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f2864799%2fefficient-matrix-vector-multiplication-for-partial-hadamard-matrices%23new-answer', 'question_page');

          );

          Post as a guest



































          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes










           

          draft saved


          draft discarded


























           


          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f2864799%2fefficient-matrix-vector-multiplication-for-partial-hadamard-matrices%23new-answer', 'question_page');

          );

          Post as a guest













































































          Comments

          Popular posts from this blog

          What is the equation of a 3D cone with generalised tilt?

          Color the edges and diagonals of a regular polygon

          Relationship between determinant of matrix and determinant of adjoint?