考虑一个大小为L x 1
的 MATLAB 单元格U
,其中每个子单元格都是一个报告一些数字的G x K
矩阵。我想构造一个大小为G x 1
的单元格T
,其中每个子单元格g
都是一个K^L x L
矩阵,报告来自U{1}(g,:)
、U{2}(g,:)
、...、U{L}(g,:)
的所有可能的L
元组。 例如,考虑
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
这能做到你想要的吗?