matlab - 矩阵/向量的线性组合

标签 matlab matrix

B 是一个 [1x8] 矩阵,也可以认为是如下两半:

B = -1 -1 0 0   0 0 1 1

这里前半部分可以有一个、两个、三个或四个-1,后半部分应该有相同数量的1下半场。它应该以线性组合的形式完成。

例如,如果前半部分有两个-1,则可以将它们放在4中,选择2 = 6的方式,对它们中的每一个下半场将有 6 种放置两个 1 的方法。所以系统一共有6*6=36种方式。即,如果前半部分有两个 -1,则 B 有 36 个不同的值。

我该怎么做?

最佳答案

可以先生成所有可能的1和0的排列,然后丢弃多余的。

%# make permutations using dec2bin (start from 17 since it's the first solution)
allB = str2double(num2cell(dec2bin(17:255)));

%# change sign in the first half, then check that the total is ok
allB(:,1:4) = - allB(:,1:4);
allB = allB(sum(allB,2)==0,:);

allB 的每一行都是B 的可能值

关于matlab - 矩阵/向量的线性组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4890452/

相关文章:

matlab - 有没有办法在matlab中进行隐式微分

python - 在 Python/NumPy 中计算矩阵的 Jordan 范式

python - 使用稀疏矩阵与 numpy 数组

R:摆脱 for 循环和加速代码

c# - 嵌套循环不进入每个元素c#

matlab - 库未在 matlab 中加载 : @loader_path/libmex. dylib

matlab - 检索变量/访问不同工作空间中的变量

string - 如何从matlab中的表格单元格中提取字符串

matlab - MATLAB pos 函数的 Haskell/hmatrix 等价物是什么?

image - 在 matlab 中逐像素检查图像的特定 RGB 值