arrays - 用于迭代选择矩阵列的 Octave 或 Matlab 代码
问题描述
我有一个A
由 4 列C1
、C2
和组成C3
的矩阵C4
。我想拥有可以从矩阵生成的所有矩阵(向量),A
而无需重复列,并且列的顺序无关紧要,即 matrix B = [C1 C2] = [C2 C1]
。更准确地说,我想获得以下矩阵/向量:[C1]; [C2]; [C3]; [C4]; [C1 C2]; [C1 C3]; [C1 C4]; [C2 C3]; [C2 C4 ]; [C3 C4]; [C1 C2 C3]; [C1 C2 C4]; [C1 C3 C4]; [C2 C3 C4]; [C1 C2 C3 C4]
.
我怎样才能在八度音阶中做到这一点?
解决方案
这是使用逻辑索引和 arrayfun 执行此操作的 MATLAB 代码:
n = size(A,2); % number of columns
x = logical(dec2bin(1:2^n-1)-'0'); % logical array of all possible combinations
C = arrayfun(@(k)A(:,x(k,:)),1:size(x,1),'uni',false); % build the combinations
结果将在元胞数组 C 中。基本上,dec2bin 结果的每一行都用于对 A 的列进行逻辑索引。请注意,此方法仅适用于相对较小的 n 值。对于较大的 n,内存需求很快就会变得不堪重负。
推荐阅读
- ubuntu - Drush 没有在 ubuntu18.10 上运行
- ffmpeg - FFmpeg 打印后卡住 警告:EOF 时间戳不可靠
- python - 如何绘制线性回归?
- python - 如何在 Pandas 数据框中按小时对行进行分组?
- javascript - 向下滚动一定数量的像素后如何重新启动视频?
- python-3.7 - TensorFlow 在命令提示符下工作,但在 spyder(ipython)中不起作用
- powershell - 传递包含 Get-ChildItem 路径的变量不会给出结果
- c# - 如何从 ListView 中检索 Label 中选定的文本?
- php - 如何从刀片中的关联数组中获取数据?
- java - Java Final 关键字 vs C++ 常量指针 vs C++ 参考