我希望将一个N*123456的矩阵转换成嵌套的单元格,每个子单元格包含一个N*L的矩阵。
例如:
matrixSize= 50*123456
N=50
L=100
输出将是1*1235个单元格,每个单元格都有一个50*L的矩阵(最后一个单元格只有50*56)。
我知道在Matlab中有一个mat2cell函数:
Output = mat2cell(x, [50], [100,100,100,......56])
但这并不是一个直观的解决方案。
那么,有没有好的解决方案呢?
我希望将一个N*123456的矩阵转换成嵌套的单元格,每个子单元格包含一个N*L的矩阵。
例如:
matrixSize= 50*123456
N=50
L=100
Output = mat2cell(x, [50], [100,100,100,......56])
但这并不是一个直观的解决方案。
那么,有没有好的解决方案呢?
m
,那么这就是你想要的内容:a=num2cell(reshape(m(:,1:size(m,2)-mod(size(m,2),L)),N*L,[]),1);
a=cellfun(@(n) reshape(n,N,L), a,'UniformOutput',false);
a{end+1}=m(:,end-mod(size(m,2),L)+1:end);
(如果您愿意,这可以缩短为一行)... 让我们用一些最小的数字来测试:
m=rand(50,334);
N=50;
L=100;
yields:
a =
[50x100 double] [50x100 double] [50x100 double] [50x34 double]
..., [], N * L)
等。a=[cellfun(@(n) reshape(n,N,L), num2cell(reshape(m(:,1:size(m,2)-mod(size(m,2),L)),N*L,[]),1),'un',0) ,{m(:,end-mod(size(m,2),L)+1:end)}];
- blaq = floor(123456/100);
r = rem(123456,100);
Output = mat2cell(x, 50, [repmat(100,1,q),r])