matlab - 向量到行总和为 1 的矩阵

标签 matlab matrix vector

我有一个逻辑 1×n 向量,总和为 m。现在,我需要将其转换为 m×n 矩阵,使行总和等于 1。

vector (1-by-8) with sum 4
[0 1 0 0 1 0 1 1]

matrix (4-by-8) with row sum 1
[0 1 0 0 0 0 0 0;
 0 0 0 0 1 0 0 0;
 0 0 0 0 0 0 1 0;
 0 0 0 0 0 0 0 1]

是否有一种数学上有效的方法,无需计算总和、创建空矩阵、循环向量并逐行添加 1?

最佳答案

我认为在这种情况下,根据您的输入,您甚至不需要计算总和。 您可以定义大小为 n 的单位矩阵,然后使用输入向量从中采样所需的行:

I = eye(n);
y = I(x, :) ; % Output Matrix. x is the input vector

关于matlab - 向量到行总和为 1 的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52567588/

相关文章:

python - 如何将列表打印为矩阵?

string - 如何将字符串 "[1, 2, 3]"转换为 Vec<u8>?

matlab - 确定在 MATLAB 中运行的是 x64 还是 x86 操作系统

matlab - 最近邻插值在 MATLAB 中如何工作?

algorithm - 寻找具有最小距离的唯一样本对

C++ 从基类实例调用派生函数

c++ - 从传递给新线程 C++ 的 vector 中删除项目

matlab - 矩阵 : Write a function in MATLAB that returns all of the positive integer numbers that satisfy the following property

matlab - 如何找到在 matlab 中重复的矩阵的每一行的索引?

arrays - 删除矩阵中的零并减小大小