在矩阵的单元格数组中添加单元格

时间:2011-11-02 16:28:10

标签: arrays matlab matrix

创建单元格数组的代码取自: Array of Matrices in MATLAB [谢谢Hosam Aly!]

功能是:

function result = createArrays(nArrays, arraySize)
    result = cell(1, nArrays);
    for i = 1 : nArrays
        result{i} = zeros(arraySize);
    end
end

我的代码:

   a=createArrays(49,[9,9]);

    a{1}(1,1) = 0.01 + 1.*rand(1,1);
    a{1}(2,2) = 0.01 + 1.*rand(1,1);
    a{1}(3,3) = 0.01 + 1.*rand(1,1);
    a{1}(4,4) = 0.01 + 1.*rand(1,1);
    a{1}(5,5) = 0.01 + 1.*rand(1,1);
    a{1}(6,6) = 0.01 + 1.*rand(1,1);
    a{1}(7,7) = 0.01 + 1.*rand(1,1);
    a{1}(8,8) = 0.01 + 1.*rand(1,1);
    a{1}(9,9) = 0.01 + 1.*rand(1,1);

我无法使用 a {:}(1,1)来引用所有矩阵。使用循环时,Matlab发现使用{}一个意外的括号。

我想保持对角线的格式如上所示。我该怎么办?

2 个答案:

答案 0 :(得分:1)

我能看到的最好的事情就是遍历所有细胞:

for i = 1:49
 a{i}(1,1) = ...
end

但是为什么在你可以做3D矩阵的时候使用细胞?

a = zeros(49,9,9);

a(:,2,2) = something

答案 1 :(得分:1)

要填充对角线元素,您不必逐个填充。请改用EYE函数。

c1 = 1;
c2 = 0.01;
for i = 1:numel(a)
    a{i} = eye(size(a{i}) * c1 + c2;
end