当UniformOutput为false时,无法访问arrayfun的结果

时间:2015-04-16 16:22:39

标签: arrays matlab

我正在尝试使用nchoosek将其应用于n个数组,n是用户的输入

function returnit = nchoosek2(array_length)
    f = @(x) nchoosek(1:1:(array_length+1),x);
    t = 1:(array_length);
    returnit = arrayfun(@(x)f(x),t,'UniformOutput',0);
end

它没有返回错误,但是当我尝试它时,我得到一个包含n个数组的数组

>> nchoosek2(5)

ans = 

[15x2 double]    [20x3 double]    [15x4 double]    [6x5 double]

问题是我无法访问这些数组的INSIDE值。我在MatLab的文档中搜索过,这个案例的描述没有提供关于如何访问这些值的线索。我只知道给出了这种结果,因为每个数组的大小并不相同。

您是否知道如何访问这些值?

1 个答案:

答案 0 :(得分:2)

您的函数的输出是一个单元格数组,因此您需要使用花括号{}来访问内部数据。请查看here以获取更多相关信息。

array_length为3的简单示例:

A = nchoosek2(3)

A = 

    [4x1 double]    [6x2 double]    [4x3 double]

如果我们使用celldisp来显示单元格数组的内容:

celldisp(A)

A{1} =

     1
     2
     3
     4



A{2} =

     1     2
     1     3
     1     4
     2     3
     2     4
     3     4



A{3} =

     1     2     3
     1     2     4
     1     3     4
     2     3     4

耶!因此,您可以使用A{}访问每个单元格的内容,或使用常规方括号()访问单元格。

这是你的意思吗?