无法访问arrayfun的结果时UniformOutput是假

我试图使用nchoosek,以便把它应用到n阵列,n为用户无法访问arrayfun的结果时UniformOutput是假

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的文档中搜索了这个案例,但没有提供关于如何访问这些值的线索。我只知道给出这种结果是因为每个数组的大小不一样。

你知道如何访问这些值吗?

回答:

你的函数的输出是一个单元数组,所以你需要使用大括号{}来访问数据。请检查here了解更多信息。

简单例如用3的array_length

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访问每个单元格的内容,或者使用常规括号()访问单元格本身。

这是你的意思吗?

以上是 无法访问arrayfun的结果时UniformOutput是假 的全部内容, 来源链接: utcz.com/qa/263646.html

回到顶部