创建不同随机矩阵的单元阵列

时间:2014-04-11 15:07:00

标签: arrays matlab random variable-assignment vectorization

我试图创建一个大小为N的单元格数组, 其中每个细胞是一个大小为M的随机矩阵, 我尝试过使用交易或简单分配,但最终结果总是N个大小为M的相同矩阵 例如:

N=20;
M=10;
CellArray=cell(1,N);
CellArray(1:20)={rand(M)};

这会在每个单元格中生成相同的矩阵,iv尝试编写这样的赋值:

CellArray{1:20}={rand(M)};

但这会产生以下错误:

此作业的右侧数值太少,无法满足左侧。

结果结果应该是一组用于模型构建的转移概率矩阵, 这是该模型的当前工作版本,但它使用循环来创建矩阵,并且工作相当慢, 我要感谢任何帮助

2 个答案:

答案 0 :(得分:2)

如果您不想使用循环,因为您对执行时间较短感兴趣,请删除单元格。

RandomArray=rand(M,M,N)

您可以使用RandomArray(:,:,index)

访问每个切片,这是您想要的MxM矩阵

答案 1 :(得分:1)

使用cellfun

N = 20;
M = 10;

CellArray = cellfun(@(x) rand(M), cell(1,N), 'uni',0)

对于新调用的每个单元格rand(M) - 与以前不同,您为每个单元格分配了相同的rand(M),只计算了一次。