gpt4 book ai didi

arrays - 将各种大小的元胞数组的元胞数组整理成大小为 {1xN} 的元胞数组的元胞数组

转载 作者:太空宇宙 更新时间:2023-11-03 20:34:08 24 4
gpt4 key购买 nike

我正在尝试整理 combnk 以生成单元格中的所有字符串组合。例如:

someStrings = {'a','b','dog','goat'};
results = arrayfun(@(k) combnk(someStrings,k),1:length(someStrings),'UniformOutput',0);

这为我提供了一个 4*1 元胞数组,其维度如下:

{4x1 cell}    {6x2 cell}    {4x3 cell}    {1x4 cell}

我想要的是一个 15*1 元胞数组,每个元胞数组的大小都是 {1xN};即 4 个大小为 {1,1} 的元胞数组、6 个大小为 {1,2} 的元胞数组,等等。我怎样才能有效地做到这一点?

编辑:好的,现在我在这里:

results = transpose(arrayfun(@(k) num2cell(combnk(someStrings,k),2),1:length(someStrings),'UniformOutput',0));
finalResults = vertcat(results{:});

是否可以将其变成一行?如何索引元胞数组,如“{:}”,但在创建元胞数组的行中?

最佳答案

您可以按如下方式实现:

intermResults=cellfun(@(x) num2cell(x,2),results,'uni',0);
finalResults=vertcat(intermResults{:});

说明:如果您查看 results 变量,您会发现这 15 个单元格。您只需要提取出每一行并将其作为一个单元格。这就是 num2cell(x,2) 所做的。通过将它包装到 cellfun 中,我将它应用于单元格数组 results 中的每个单元格。现在您有一个 1x4 单元格,其中每行结果都已转换为一个单独的单元格。您只需要将其连接起来即可产生最终答案。这就是 vertcat(intermResults{:}) 所做的。

关于arrays - 将各种大小的元胞数组的元胞数组整理成大小为 {1xN} 的元胞数组的元胞数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29724646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com