我试图创建一个大小为N的单元格数组, 其中每个细胞是一个大小为M的随机矩阵, 我尝试过使用交易或简单分配,但最终结果总是N个大小为M的相同矩阵 例如:
N=20;
M=10;
CellArray=cell(1,N);
CellArray(1:20)={rand(M)};
这会在每个单元格中生成相同的矩阵,iv尝试编写这样的赋值:
CellArray{1:20}={rand(M)};
但这会产生以下错误:
此作业的右侧数值太少,无法满足左侧。
结果结果应该是一组用于模型构建的转移概率矩阵, 这是该模型的当前工作版本,但它使用循环来创建矩阵,并且工作相当慢, 我要感谢任何帮助
答案 0 :(得分:2)
如果您不想使用循环,因为您对执行时间较短感兴趣,请删除单元格。
RandomArray=rand(M,M,N)
您可以使用RandomArray(:,:,index)
答案 1 :(得分:1)
使用cellfun
:
N = 20;
M = 10;
CellArray = cellfun(@(x) rand(M), cell(1,N), 'uni',0)
对于新调用的每个单元格rand(M)
- 与以前不同,您为每个单元格分配了相同的rand(M)
,只计算了一次。