将矩阵划分为更小的矩阵

时间:2012-07-18 14:22:40

标签: matlab matrix

嗨我有一个矩阵A大小ixi,我想把它分成更小的矩阵,这样每个子矩阵都适合矩阵B大小jxj的维数。我该怎么做?

B = mat2cell(A,size(B));

似乎没有这样做。

注意:子矩阵的数量= sqrt(n),即如果A是100x100则会有10个子矩阵,如果A是81x81,则会有9个子矩阵。

谢谢

3 个答案:

答案 0 :(得分:4)

对于mat2cell,如果要将矩阵拆分为两个,则必须为每组行/列指定大小。因此,如果您需要将2 x 2数组划分为4个1 x 1数组,则为mat2cell(array,[1 1],[1 1])

nSub = sqrt(size(A,1));

B = mat2cell(A,nSub*ones(1,nSub),nSub*ones(1,nSub));

答案 1 :(得分:0)

尝试repmat。根据需要,您可以将您的axb数据重组为较小的pxqxr矩阵。

答案 2 :(得分:0)

嘿,一旦我解决了将4x4矩阵划分为2x2子矩阵的问题。您可以在此处检查我的代码(使用Java):

   int arr[][]=new int[n][n];
   System.out.println("Enter a 4x4 matrix");
   for(int a=0;a<n;a++)
   {
       for(int b1=0;b1<m;b1++)
       {                                     
           arr[a][b1]=sc.nextInt();               //Filling up the matrix
       }
   }
   int b=2;
   int s=1,r=0,c=0,i,j=0;
   while(s<=4){

           for ( i = r; i < r + b; i++) {
               for ( j = c; j < c + b; j++) {
                System.out.print(arr[i][j]);   //Printing the sub matrices
               }
               System.out.println();
           }
       if(j>=m-1){
          r=r+b;
           c=0;
       }else{
           c=c+b;
       }
       System.out.println();
       s++;
    }