【问题标题】:Is there a way to vectorize this Matlab/Octave code有没有办法向量化这个 Matlab/Octave 代码
【发布时间】:2019-03-10 18:44:34
【问题描述】:
Y=zeros(length (y),10)
for c=1:length(y)
Y(c,y(c))=1
end

其中 y 是包含从 1 到 10 的整数的列向量

【问题讨论】:

  • 换句话说:您的代码已经矢量化。你只是重复了很多次,但每次都已经矢量化了。
  • @AnderBiguri 抱歉,我在循环变量中写了 k 而不是 c。

标签: matlab vectorization octave


【解决方案1】:

使用线性索引:

Y=zeros(length (y),10)
c=1:length(y)
indices=sub2ind(size(Y),c.',y(c));
Y(indices)=1;

【讨论】:

  • y(c) 应该是 y,因为 sub2ind 将向量作为第二和第三个参数,而 c 应该是 c',因为 y 是列向量,而 c 是行向量。感谢您的回答
  • 您修改后我会将其标记为正确答案。
  • @BaidyanathKundu y(c) 是一个向量,但正如你所说,它与这种情况无关。在您的问题中,无法知道 y 是行还是列,因为您没有共享该信息。我将不进行编辑。
  • 请阅读问题,因为我从一开始就提到 y 是我的代码下方的列向量,并且由于 y 是向量 y(c) 是元素而不是向量。
  • @BaidyanathKundu 记得始终提供minimal reproducible example。为您满意而编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多