细胞阵列(不同大小的细胞)到基质

时间:2016-01-14 13:29:05

标签: matlab matrix cell-array

我正在尝试将具有不同大小的单元格内容的单元格数组转换为矩阵。我尝试了以下代码(来自previous question):

tcell = {[1,2,3], [1,2,3,4,5], [1,2,3,4,5,6], [1], []};  %# Sample array
maxSize = max(cellfun(@numel,tcell));    %# Get the maximum vector size
fcn = @(x) [x nan(1,maxSize-numel(x))];  %# Create an anonymous function
rmat = cellfun(fcn,tcell,'UniformOutput',false);  %# Pad each cell with NaNs
rmat = vertcat(rmat{:})                  %# Vertically concatenate cells

我收到以下错误代码:

  

连接的矩阵的尺寸不一致。

     

@(x)[x,nan(1,maxSize-numel(x))]

中的错误

我认为我的单元格数组与测试示例的内容不同(请参阅tell):在MATLAB中查看时,我的单元格数组(1x31单元格)的内容是

30x1 cell    40x1 cell    37x1 cell 

我是否必须先对我的单元阵列进行另一次转换?如何将我的单元阵列转换为tcell的形式?

我一直在寻找一段时间,但我还不熟悉所有的术语。解决方案可以很简单,但我还没有看到它的知识。欢迎所有投入!

2 个答案:

答案 0 :(得分:1)

实际上你的原始代码几乎是完美的,但对于行向量。对于单元格中的列向量,您错过了分号。

    maxSize = max(cellfun(@numel,tcell));    %# Get the maximum vector size
    fcn = @(x) [x ; nan(1,maxSize-numel(x))];  %# semicolon here                
    rmat = cellfun(fcn,tcell,'UniformOutput',false);  %# Pad each cell with NaNs

答案 1 :(得分:0)

由于评论员的意见,我找到了以下答案:

myFunc.prototype.newProperty = "New";