【发布时间】:2020-12-16 19:16:05
【问题描述】:
考虑 Matlab 中的 n 行向量,每个大小为 1xU。例如,
U=20;
n=3;
sU=[U U U];
vectors = arrayfun(@(x) {1:x}, sU);
其中vector{1} 是第一行向量,vector{2} 是第二行向量,...,vector{n} 是最后一行向量。
我们创建大小为U^n x n 的矩阵Tcoord,报告来自n 行向量的所有可能的n-元组。对于Tcoord的每一行i,Tcoord(i,1)是第一行向量的一个元素,Tcoord(i,2)是第二行向量的一个元素,...,Tcoord(i,n)是最后一行向量的一个元素.
Tcoord_temp = cell(1,n);
[Tcoord_temp{:}] = ndgrid(vectors{:});
Tcoord_temp = cat(n+1, Tcoord_temp{:});
Tcoord = reshape(Tcoord_temp,[],n);
现在假设我扩充 3 元素的每个n 行向量。例如,
vectors_augmented{1}=[vectors{1} 8 9 10];
vectors_augmented{2}=[vectors{2} 11 12 13];
vectors_augmented{3}=[vectors{3} 14 15 16];
然后我创建一个类似于Tcoord 但现在使用vectors_augmented 的矩阵。
Tcoord_temp = cell(1,n);
[Tcoord_temp{:}] = ndgrid(vectors_augmented{:});
Tcoord_temp = cat(n+1, Tcoord_temp{:});
Tcoord_augmented = reshape(Tcoord_temp,[],n); %(U+3)^nxn
我希望您的帮助重新排序矩阵Tcoord_augmented 的行在矩阵Tcoord_augmented_reshape 中,这样
-
Tcoord_augmented_reshape(1:U^n,:)等于Tcoord。 -
Tcoord_augmented_reshape的其余行包含Tcoord_augmented的其他左侧行。
【问题讨论】:
-
那段代码看起来很眼熟...
-
确实如此,不是吗?