matlab - MATLAB中某些数字的所有可能组合的矩阵:如何在维度上通用
问题描述
U
考虑一个大小为 的 MATLAB 单元L x 1
,其中每个子单元是一个G x K
报告一些数字的矩阵。我想构建一个T
大小为 的单元格G x 1
,其中每个子单元格g
都是一个K^L x L
矩阵,报告L
来自U{1}(g,:)
, U{2}(g,:)
, ...,的所有可能的元组U{L}(g,:)
。例如,考虑
L=3;
G=5;
K=4;
%U=cell(L,1);
U{1}=randn(5,4);
U{2}=randn(5,4);
U{3}=randn(5,4);
T=cell(G,1);
for g=1:G
U1=U{1}(g,:);
U2=U{2}(g,:);
U3=U{3}(g,:);
[ca, cb, cc] = ndgrid(U1, U2, U3);
T{g} = [ca(:), cb(:), cc(:)];
end
如何将此代码推广到任何代码L
?
我想我可以使用和修改这个问题的答案,但我正在努力设置输入变量。
解决方案
我稍微调整了另一个主题的解决方案:
L=3;
G=5;
K=4;
U=cell(L,1);
U = cellfun(@(x) {randn(G,K)}, U);
T=cell(G,1);
for g=1:G
Cin = cellfun(@(x) {x(g,:)}, U);
Cout = cell(L,1);
[Cout{:}] = ndgrid(Cin{:});
Cout = cellfun(@(x) {x(:)}, Cout);
T{g} = [Cout{:}];
end
那会做你想要的吗?
推荐阅读
- python - 如何使用 python boto3 向本地 SQS 队列发送消息?
- c++ - C ++插入排序错误功能不起作用
- javascript - Javascript 对日期对象数组进行排序
- android - android studio清单文件问题
- date - 某人去世时如何停止约会
- git - 在 rebase 中撤消 git move
- performance - 休眠会话初始化在生产中非常慢,有许多实体定义
- python - python3 make (e=5): 访问被拒绝
- javascript - 如何给一个默认值?
- mysql - MySQL Workbench,NULL 的平均值返回“0”,我需要它返回 NULL