<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Dec 13, 2016 at 9:51 PM, Amina Shahzadi <span dir="ltr"><<a href="mailto:aminashahzadi@gmail.com" target="_blank">aminashahzadi@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div>Hello Friends and Prof. Dirk<br><br></div>I am pasting here a code which has a for loop depending on another for loop. <br></div>I am getting zeros for cube c. I tried and searched a lot but did not get an example of this type. Would you please help in this regard?<br><br><br>#include <RcppArmadillo.h><br>using namespace Rcpp;<br>using namespace RcppArmadillo;<br>using namespace arma;<br>//[[Rcpp::depends(<wbr>RcppArmadillo)]]<br>//[[Rcpp::export]]<br><br><br>arma::cube  exam(arma::vec a,  arma::mat b)<br>{<br>  int m = a.size();<br>  int n = b.n_rows;<br>  arma::cube c = zeros<cube>(n, m, n);<br>  for(int i=0; i<n; i++) {<br>    for(int j=0; j<m; j++) {<br>      for(int k=0; k<i; k++) {<br>          if(k==0) {<br>            c(i, j ,k) = c(i, j, k) + b(i, j);<br>          }<br>          else{<br>            c(i, j, k) = c(i, j, k) +  c(i-1, j, k) *b(i, j);<br>          }<br>         }<br>        }<br>      }<br>  return c;<br>}<br><br><br></div><div><div><div><div>Thank You<span class="gmail-HOEnZb"><font color="#888888"><br></font></span></div><span class="gmail-HOEnZb"><font color="#888888"><div>-- <br><div class="gmail-m_-5403746280849366164gmail_signature"><i><font face="comic sans ms,sans-serif">Amina Shahzadi</font></i></div>
</div></font></span></div></div></div></div></blockquote><div><br><br><div>Hello.<br><br></div><div>I haven't run your code, but it strikes me
 that I cannot see where are you capturing the number of columns of b. 
It's a bit confusing as I was always taught a matrix has m rows and n 
columns. Be that as it may, your k==0 loop looks like it's trying to 
copy over the original matrix to the first slice, but how do you know 
that b has m columns, which is what you're assuming by letting j loop to
 m. Unless you are assuming a square matrix?<br><br></div><div>Even if you are, if your matrix is not the same length as your vector, I think there is an issue with your loop boundaries, unless I've misunderstood something, which is certainly possible.<br><br>For example, assume a is {1, 2, 3} and b is the 2 x 2 of row 1: [1 2] and row 2: [3 4]. Thus m = 3 and n = 2.<br><br></div><div>Step 1: i = j = k = 0: c(0, 0, 0) becomes b(0, 0) or 1.<br><br></div><div>Step 2: i = 0, j = 1, k = 0: c(0, 1, 0) becomes b(0, 1) or 2.<br><br></div><div>Step 3: i = 0, j = 2, k = 0: c(0, 2, 0) becomes b(0, 2) ?!?! There is no b(0, 2), it's only a 2x2 matrix?<br><br><br></div><div>Similar to your previous questions, instead of posting code, can you please describe in words what it is you are trying to do? That may help.<br></div><div><br></div>Avi <br></div></div><br></div></div>