Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 使用单元格数组将矩阵拆分为更小的矩阵?_Arrays_Matlab_Matrix_Split - Fatal编程技术网

Arrays 使用单元格数组将矩阵拆分为更小的矩阵?

Arrays 使用单元格数组将矩阵拆分为更小的矩阵?,arrays,matlab,matrix,split,Arrays,Matlab,Matrix,Split,关于如何将大矩阵拆分为小矩阵,有几个问题都建议mat2cell 例如,这里是和 我试过了,但是我得到了一个单元格数组,我必须把它重新转换成一个矩阵,因为我在第一个问题中试图回答(我删除了答案) 我测试了这个: e = magic(20); tic f = mat2cell( e, 20, [10 10] ); f1 = cell2mat(f(1,1)); f2 =cell2mat(f(1,2)); toc tic f1 = e(:,1:10); f2 = e(:,11:20); toc 我

关于如何将大矩阵拆分为小矩阵,有几个问题都建议
mat2cell

例如,这里是和

我试过了,但是我得到了一个单元格数组,我必须把它重新转换成一个矩阵,因为我在第一个问题中试图回答(我删除了答案)

我测试了这个:

e = magic(20);

tic
f = mat2cell( e, 20, [10 10] );
f1 = cell2mat(f(1,1));
f2 =cell2mat(f(1,2));
toc

tic
f1 = e(:,1:10);
f2 = e(:,11:20);
toc
我得到

Elapsed time is 0.000437 seconds.
Elapsed time is 0.000009 seconds.
当相互关联时,差异很大。
使用单元阵列解决此问题有什么好处?

您的问题与标题不一致。另外,真正的问题是,单元阵列的优势是什么?是一种基于观点的->离题。尝试重新表述问题,以便以独特的方式而不是通过讨论来回答。这里的关键是您不希望创建变量
f1
f2
,而只希望创建单元格变量
f
。这样一来,
f1
就变成了
f{1}
f2
就变成了
f{2}
,在这里,这些矩阵的索引实际上可以用作索引(即在它们上面循环)。如果不分成两个子矩阵,而是分成20或200子矩阵,情况会越来越糟。没有人想处理变量
f1
f200
,而是使用
f{1}
f{200}
。但是我还是必须转换它们才能使用它们@我会试试的,但我真的想从比我更专业的人那里知道原因。我知道这不是一个真正的“代码帮助我”问题。@rickratti,你试过了吗
f1+f{2}
应给出与
f1+f2
f{1}+f{2}
f{1}+f2
完全相同的结果。什么都不需要转换。它们是完全可替换的,因此您不需要变量
f1
f2
。。。但这是一个强调这个概念的好问题:尽量不要在变量名中隐藏索引,而是使用“实”索引。考虑2行向量<代码> V1 < /代码>和<代码> V2 < /代码>。它们可以被设置成一个矩阵
v
,并由
v(1,:)
v(2,:)
(如果它们大小相同)处理,或者设置成一个单元格,然后由
v{1}
v{2}
处理。因此,您的+1:-)将被删除。