首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB -如何组合c()单元格?

MATLAB -如何组合c()单元格?
EN

Stack Overflow用户
提问于 2018-04-26 23:46:11
回答 1查看 628关注 0票数 1

假设我的向量不包含双倍。它们含有细胞。combvec拒绝接受单元值..。例如:

代码语言:javascript
复制
m = {
    [cell1, cell2, cell3];
    [cell4, cell5];
    [cell6];
    };

我想以某种方式得到一个细胞向量,包含所有可能的细胞组合:[[cell1, cell4, cell6]; [cell1, cell5, cell6]; [cell2, cell4, cell6]; [cell2, cell5, cell6]; [cell3, cell4, cell6]; [cell3, cell5, cell6];];

怎么做呢?

我之所以这么做是因为我已经分组了项目,我想找到它们的所有组合,所以我想把它们插入到nx1单元中。如果有更好的解决办法,请建议..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-27 08:07:25

只需在表示列索引的整数数组中使用combvec,然后使用该数组对原始数组进行索引。

代码语言:javascript
复制
C = {[{1} {2} {3}]; [{4} {5}]; [{6}]}
cv = combvec(1:3, 1:2, 1)

out = [C{1}(1,cv(1,:)); C{2}(1,cv(2,:)); C{3}(1,cv(3,:))];

你可以这样概括(也许有一个更整洁的方法)

代码语言:javascript
复制
idx = cellfun(@(x) 1:numel(x), C, 'uni', 0); % set up indexing array
cv = combvec(idx{:}); % get combinations

out = arrayfun(@(x) C{x}(1,cv(x,:)), 1:3, 'uni', 0); % index into the cell array
out = vertcat(out{:}); % concatenate results

% Result
>> out = 
{[1]}    {[2]}    {[3]}    {[1]}    {[2]}    {[3]}
{[4]}    {[4]}    {[4]}    {[5]}    {[5]}    {[5]}
{[6]}    {[6]}    {[6]}    {[6]}    {[6]}    {[6]}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50053350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档