Hello, Amina. Firstly, why are you even passing in a if b contains the proper dimensions. It's not like you are using a.
Secondly, and more importantly, once you provided the r code, you can see that this is **EXACTLY** the problem you asked on September 26 of this year, see http://lists.r-forge.r-project.org/pipermail/rcpp-devel/2016-September/009369.html, and the answer I gave on September 27 works here too, see http://lists.r-forge.r-project.org/pipermail/rcpp-devel/2016-September/009374.html . Avi On Wed, Dec 14, 2016 at 1:46 AM, Amina Shahzadi <aminashahz...@gmail.com> wrote: > Oh sorry. No. of columns in b and size of a must always be same. > I have made an r code to show the output. > > > a = c(1, 2, 3) > b = matrix(1:30, nrow=10, ncol=3) > c = array(as.double(0), dim=c(10, 3, 10)) > for(i in 1:10){ > for(j in 1:3){ > for(k in 1:i){ > if(k==1) c[i, j, k] = b[i, j] > else c[i, j, k] = c[i-1, j, k-1] * b[i, j] > } > } > } > > Output: > > > c, , 1 > > [,1] [,2] [,3] > [1,] 1 11 21 > [2,] 2 12 22 > [3,] 3 13 23 > [4,] 4 14 24 > [5,] 5 15 25 > [6,] 6 16 26 > [7,] 7 17 27 > [8,] 8 18 28 > [9,] 9 19 29 > [10,] 10 20 30 > > , , 2 > > [,1] [,2] [,3] > [1,] 0 0 0 > [2,] 2 132 462 > [3,] 6 156 506 > [4,] 12 182 552 > [5,] 20 210 600 > [6,] 30 240 650 > [7,] 42 272 702 > [8,] 56 306 756 > [9,] 72 342 812 > [10,] 90 380 870 > > , , 3 > > [,1] [,2] [,3] > [1,] 0 0 0 > [2,] 0 0 0 > [3,] 6 1716 10626 > [4,] 24 2184 12144 > [5,] 60 2730 13800 > [6,] 120 3360 15600 > [7,] 210 4080 17550 > [8,] 336 4896 19656 > [9,] 504 5814 21924 > [10,] 720 6840 24360 > > , , 4 > > [,1] [,2] [,3] > [1,] 0 0 0 > [2,] 0 0 0 > [3,] 0 0 0 > [4,] 24 24024 255024 > [5,] 120 32760 303600 > [6,] 360 43680 358800 > [7,] 840 57120 421200 > [8,] 1680 73440 491400 > [9,] 3024 93024 570024 > [10,] 5040 116280 657720 > > , , 5 > > [,1] [,2] [,3] > [1,] 0 0 0 > [2,] 0 0 0 > [3,] 0 0 0 > [4,] 0 0 0 > [5,] 120 360360 6375600 > [6,] 720 524160 7893600 > [7,] 2520 742560 9687600 > [8,] 6720 1028160 11793600 > [9,] 15120 1395360 14250600 > [10,] 30240 1860480 17100720 > > , , 6 > > [,1] [,2] [,3] > [1,] 0 0 0 > [2,] 0 0 0 > [3,] 0 0 0 > [4,] 0 0 0 > [5,] 0 0 0 > [6,] 720 5765760 165765600 > [7,] 5040 8910720 213127200 > [8,] 20160 13366080 271252800 > [9,] 60480 19535040 342014400 > [10,] 151200 27907200 427518000 > > , , 7 > > [,1] [,2] [,3] > [1,] 0 0 0 > [2,] 0 0 0 > [3,] 0 0 0 > [4,] 0 0 0 > [5,] 0 0 0 > [6,] 0 0 0 > [7,] 5040 98017920 4475671200 > [8,] 40320 160392960 5967561600 > [9,] 181440 253955520 7866331200 > [10,] 604800 390700800 10260432000 > > , , 8 > > [,1] [,2] [,3] > [1,] 0 0 0 > [2,] 0 0 0 > [3,] 0 0 0 > [4,] 0 0 0 > [5,] 0 0 0 > [6,] 0 0 0 > [7,] 0 0 0 > [8,] 40320 1764322560 125318793600 > [9,] 362880 3047466240 173059286400 > [10,] 1814400 5079110400 235989936000 > > , , 9 > > [,1] [,2] [,3] > [1,] 0 0 0.000000e+00 > [2,] 0 0 0.000000e+00 > [3,] 0 0 0.000000e+00 > [4,] 0 0 0.000000e+00 > [5,] 0 0 0.000000e+00 > [6,] 0 0 0.000000e+00 > [7,] 0 0 0.000000e+00 > [8,] 0 0 0.000000e+00 > [9,] 362880 33522128640 3.634245e+12 > [10,] 3628800 60949324800 5.191779e+12 > > , , 10 > > [,1] [,2] [,3] > [1,] 0 0 0.000000e+00 > [2,] 0 0 0.000000e+00 > [3,] 0 0 0.000000e+00 > [4,] 0 0 0.000000e+00 > [5,] 0 0 0.000000e+00 > [6,] 0 0 0.000000e+00 > [7,] 0 0 0.000000e+00 > [8,] 0 0 0.000000e+00 > [9,] 0 0 0.000000e+00 > [10,] 3628800 670442572800 1.090274e+14 > > > > > On Wed, Dec 14, 2016 at 7:27 PM, Avraham Adler <avraham.ad...@gmail.com> > wrote: > >> >> >> On Wed, Dec 14, 2016 at 1:24 AM Amina Shahzadi <aminashahz...@gmail.com> >> wrote: >> >>> Hello Avraham --Happy to see you >>> >>> My code is trying to produce a cube c which is going to be constructed >>> by a vector a and matrix b. >>> And the number of rows in b and size of a must be same. >>> >>> So we can assume that if a is a vector of size 3, Then b must be 2 x 3 >>> or 3 X 3 etc. >>> >>> Thank you Avraham for quick response. I hope this will make my question >>> more clear. >>> >>> Best regards >>> >>> >>> On Wed, Dec 14, 2016 at 4:46 PM, Avraham Adler <avraham.ad...@gmail.com> >>> wrote: >>> >>> On Tue, Dec 13, 2016 at 9:51 PM, Amina Shahzadi <aminashahz...@gmail.com >>> > wrote: >>> >>> Hello Friends and Prof. Dirk >>> >>> I am pasting here a code which has a for loop depending on another for >>> loop. >>> 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? >>> >>> >>> #include <RcppArmadillo.h> >>> using namespace Rcpp; >>> using namespace RcppArmadillo; >>> using namespace arma; >>> //[[Rcpp::depends(RcppArmadillo)]] >>> //[[Rcpp::export]] >>> >>> >>> arma::cube exam(arma::vec a, arma::mat b) >>> { >>> int m = a.size(); >>> int n = b.n_rows; >>> arma::cube c = zeros<cube>(n, m, n); >>> for(int i=0; i<n; i++) { >>> for(int j=0; j<m; j++) { >>> for(int k=0; k<i; k++) { >>> if(k==0) { >>> c(i, j ,k) = c(i, j, k) + b(i, j); >>> } >>> else{ >>> c(i, j, k) = c(i, j, k) + c(i-1, j, k) *b(i, j); >>> } >>> } >>> } >>> } >>> return c; >>> } >>> >>> >>> Thank You >>> -- >>> *Amina Shahzadi* >>> >>> >>> >>> >>> Hello. >>> >>> 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? >>> >>> 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. >>> >>> 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. >>> >>> Step 1: i = j = k = 0: c(0, 0, 0) becomes b(0, 0) or 1. >>> >>> Step 2: i = 0, j = 1, k = 0: c(0, 1, 0) becomes b(0, 1) or 2. >>> >>> 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? >>> >>> >>> 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. >>> >>> Avi >>> >>> >>> >>> >>> >>> >>> -- >>> *Amina Shahzadi* >>> >>> >>> Constructed how? Can you provide a simple set of inputs and the expected >> output? >> >> Avi >> -- >> Sent from Gmail Mobile >> > > > > -- > *Amina Shahzadi* >
_______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel