结果矩阵,其中每个条目是Matlab中不同大小的向量

时间:2014-03-24 00:24:37

标签: matlab matrix

我有一个128 X 8192矩阵。我使用以下方法将其拆分为大小为1X64的单元阵列:

C = mat2cell(input_matrix,repmat(1,[1 128]),repmat(64,[1 128]));

现在我需要将每个这些单元格数组传递给函数说“fn_X'”。此函数返回不同大小的数组。我需要传递的每个单元格数组的输出存储在结果矩阵中。我使用了以下代码:

for(irl = 1 : 128)
        for(jrl = 1 : 128)
            Output_matrix(irl,jrl) = fn_X(C{irl,jrl});
         end
end

这给了我一个错误'订阅分配维度不匹配。'

然后我使用以下代码在列矩阵中尝试了它:

king = 1;
    for(irl = 1 : 128)
        for(jrl = 1 : 128)
            Output_matrix(king) = fn_X(C{irl,jrl});
            king = king + 1;
        end
    end

这给了我一个错误'在作业A(I)= B中,B和I中的元素数必须相同。'

我还尝试使用以下代码分配单元数组:

king = 1;
for(irl = 1 : 128)
    for(jrl = 1 : 128)
        Output_matrix(king) = fn_X(C{irl,jrl});
        king = king + 1;
    end
end

这给错误'单元格内容分配到非单元格数组对象。'

关于我如何处理此事的任何建议?

1 个答案:

答案 0 :(得分:0)

代码的问题是应该在作业的左侧使用大括号:

king = 1;
for irl = 1 : 128
    for jrl = 1 : 128
        Output_matrix{king} = fn_X(C{irl,jrl});
        king = king + 1;
    end
end

但这可能正确的方法。这不是"风格"对于语言来说,有意义的方法是向量化,这可能需要fn_X处理它本身。

或者,你也可以用更简单的方式(通常更快)来做到这一点:

Output_matrix = cellfun (@fn_X, C, "UniformOutput", false);