example.cpp 858 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include <cstdio>
  2. #include <iostream>
  3. using namespace std;
  4. #include <igl/transpose_blocks.h>
  5. using namespace igl;
  6. int main(int argc,char * argv[])
  7. {
  8. // hieght of block
  9. int m = 2;
  10. // width of block
  11. int n = 4;
  12. // number of blocks
  13. int k = 3;
  14. // dimension blocks run along
  15. int dim = 1;
  16. // Input
  17. Eigen::MatrixXd A;
  18. if(dim == 1)
  19. {
  20. A.resize(m*k,n);
  21. }else{
  22. A.resize(m,n*k);
  23. }
  24. // loop over blocks
  25. for(int b = 0;b<k;b++)
  26. {
  27. for(int i = 0;i<m;i++)
  28. {
  29. for(int j = 0;j<n;j++)
  30. {
  31. if(dim == 1)
  32. {
  33. A(b*m+i,j) = 100*b + i*n + j;
  34. }else// dim == 2
  35. {
  36. A(i,b*n+j) = 100*b + i*n + j;
  37. }
  38. }
  39. }
  40. }
  41. cout<<"A=["<<endl<<A<<endl<<"];"<<endl;
  42. Eigen::MatrixXd B;
  43. transpose_blocks(A,k,dim,B);
  44. cout<<"B=["<<endl<<B<<endl<<"];"<<endl;
  45. return 0;
  46. }