我有一个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
这给错误'单元格内容分配到非单元格数组对象。'
关于我如何处理此事的任何建议?
答案 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);