在matlab中将矩阵的各个元素存储到单元格的各个元素中

时间:2014-05-08 06:57:16

标签: matlab

我在matlab中有一个函数返回一个大小为m x n的矩阵。我想将此矩阵的每个单独元素存储到维度为m x n x p x 2的单元格的各个元素中。这里m,n,p都是大数,因此我需要一个没有循环的解决方案。

换句话说,我需要一行代码来实现以下循环:

    for k = 1:p
    out = func(parameters(k))  %out is mxn matrix
    for i = 1:m
        for j = 1:n
            cell{i,j,k,1} = out(i,j)
        end
    end
    end

1 个答案:

答案 0 :(得分:1)

我不清楚你x 2输出中m x n x p x 2来自哪里,但您可以尝试以下内容:

p = 10; n = 15; m = 20;

result = arrayfun(@(x) num2cell( func(x) ), 1:p, 'uni',0);
output = reshape([result{:}],n,m,p);

或:

result = arrayfun(@(x) func(x), 1:p,'uni',0);
output = num2cell(reshape([result{:}],n,m,p));

输出为15 x 20 x 10 x 1单元格。其中每个单元格元素都包含一个带有一个数值的“数组”。

如果你坚持,古怪的单行:

output = num2cell(reshape(cell2mat(arrayfun(@(x) func(x),1:p,'uni',0)), n,m,p) );