首页 文章

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

提问于
浏览
0

我有一个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

这给了我一个错误'Subscripted assignment dimension mismatch' .

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

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

    您的代码上的问题是应该在赋值的左侧使用大括号:

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

    但这可能是正确的做法.1874270_正确的做法 . 这不是语言的"style",有意义的方法是矢量化,这可能需要 fn_X 处理这个本身 .

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

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

相关问题