嗨我有一个矩阵A大小ixi,我想把它分成更小的矩阵,这样每个子矩阵都适合矩阵B大小jxj的维数。我该怎么做?
B = mat2cell(A,size(B));
似乎没有这样做。
注意:子矩阵的数量= sqrt(n),即如果A是100x100则会有10个子矩阵,如果A是81x81,则会有9个子矩阵。
谢谢
答案 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++;
}