我正在尝试使用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的文档中搜索过,这个案例的描述没有提供关于如何访问这些值的线索。我只知道给出了这种结果,因为每个数组的大小并不相同。
您是否知道如何访问这些值?
答案 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
从{}
访问每个单元格的内容,或使用常规方括号()
访问单元格。
这是你的意思吗?