【发布时间】:2018-06-19 13:36:02
【问题描述】:
我目前正在 MATLAB 中按照下面描述的方案从向量形成一个矩阵:
Given 是一个向量x,包含任意顺序的 1 和 0,例如
x = [0 1 1 0 1];
由此,我想形成一个矩阵Y,描述如下:
-
Y具有m行,其中m是x中的行数(此处为:3)。 -
Y的每一行在k-th 条目处填充一个 1,其中k是向量x中一个 1 的位置(此处为:k = 2,3,5) -
对于上面的示例
x,这将导致:Y = [0 1 0 0 0; 0 0 1 0 0; 0 0 0 0 1]这与单位矩阵相同,它的第 (
x=0) 行已被消除。
我目前正在通过以下代码实现此目的:
x = [0,1,1,0,1]; %example from above
m = sum(x==1);
Y = zeros(m,numel(x));
p = 1;
for n = 1:numel(x)
if x(n) == 1
Y(p,n) = 1;
p = p+1;
end
end
它有效,但我对它有点不满意,因为它似乎效率低下且不雅。欢迎任何关于更顺畅实现的想法,可能使用一些矩阵乘法等。
【问题讨论】:
标签: arrays matlab matrix vector matrix-multiplication